From ff9aa1404721e3a80688d5c11c40e18071167b7c Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Tue, 14 Jan 2020 12:33:48 +0200 Subject: [PATCH] Refactors how researchers are fetched from external sources and saved in general. --- .../eu/eudat/data/entities/Researcher.java | 4 +- .../model/models/ResearcherBuilder.java | 23 +++++- .../logic/managers/ResearcherManager.java | 16 ++++- .../eu/eudat/models/data/dmp/Researcher.java | 71 +++++++++++++------ .../external/ExternalSourcesItemModel.java | 8 +++ .../ResearchersExternalSourcesModel.java | 3 +- .../app/core/model/researcher/researcher.ts | 1 + .../general-tab/general-tab.component.ts | 4 +- 8 files changed, 99 insertions(+), 31 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Researcher.java b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Researcher.java index 1ede09a23..7777a883f 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Researcher.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Researcher.java @@ -19,8 +19,8 @@ import java.util.UUID; public class Researcher implements DataEntity { @Id - @GeneratedValue - @GenericGenerator(name = "uuid2", strategy = "uuid2") + /*@GeneratedValue + @GenericGenerator(name = "uuid2", strategy = "uuid2")*/ @Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)") private UUID id; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/ResearcherBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/ResearcherBuilder.java index ba001431d..c8f9f0084 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/ResearcherBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/builders/model/models/ResearcherBuilder.java @@ -3,15 +3,14 @@ package eu.eudat.logic.builders.model.models; import eu.eudat.logic.builders.Builder; import eu.eudat.models.data.dmp.Researcher; -/** - * Created by ikalyvas on 3/6/2018. - */ public class ResearcherBuilder extends Builder { private String label; private String name; private String id; + private String reference; private int status; private String tag; + private String key; public String getLabel() { return label; @@ -40,6 +39,13 @@ public class ResearcherBuilder extends Builder { return this; } + public String getReference() { return reference; } + + public ResearcherBuilder reference(String reference) { + this.reference = reference; + return this; + } + public int getStatus() { return status; } @@ -58,14 +64,25 @@ public class ResearcherBuilder extends Builder { return this; } + public String getKey() { + return key; + } + + public ResearcherBuilder key(String key) { + this.key = key; + return this; + } + @Override public Researcher build() { Researcher researcher = new Researcher(); researcher.setId(id); + researcher.setReference(reference); researcher.setLabel(label); researcher.setName(name); researcher.setStatus(status); researcher.setTag(tag); + researcher.setKey(key); return researcher; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java index e09988e80..0d9104056 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ResearcherManager.java @@ -3,6 +3,8 @@ package eu.eudat.logic.managers; import eu.eudat.logic.builders.model.models.ResearcherBuilder; import eu.eudat.data.entities.Researcher; import eu.eudat.logic.proxy.config.ExternalUrlCriteria; +import eu.eudat.logic.proxy.config.configloaders.ConfigLoader; +import eu.eudat.logic.utilities.helpers.ListHelper; import eu.eudat.models.data.external.ExternalSourcesItemModel; import eu.eudat.models.data.external.ResearchersExternalSourcesModel; import eu.eudat.data.query.items.item.researcher.ResearcherCriteriaRequest; @@ -17,7 +19,6 @@ import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.stream.Collectors; /** @@ -28,11 +29,13 @@ public class ResearcherManager { private ApiContext apiContext; private RemoteFetcher remoteFetcher; + private ConfigLoader configLoader; @Autowired - public ResearcherManager(ApiContext apiContext) { + public ResearcherManager(ApiContext apiContext, ConfigLoader configLoader) { this.apiContext = apiContext; this.remoteFetcher = apiContext.getOperationsContext().getRemoteFetcher(); + this.configLoader = configLoader; } public Researcher create(eu.eudat.models.data.researcher.Researcher researcher, Principal principal) throws Exception { @@ -46,6 +49,13 @@ public class ResearcherManager { QueryableList items = apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao().getWithCriteria(researcherCriteriaRequest.getCriteria()); items.where((builder, root) -> builder.equal(root.get("creationUser").get("id"), principal.getId())); List researchers = items.select(item -> new eu.eudat.models.data.dmp.Researcher().fromDataModel(item)); + Map keyToSourceMap = configLoader.getKeyToSourceMap(); + for (eu.eudat.models.data.dmp.Researcher item : researchers) { + if (item.getKey().equals("Internal")) + item.setTag(item.getKey()); + else + item.setTag(keyToSourceMap.get(item.getKey())); + } ExternalUrlCriteria externalUrlCriteria = new ExternalUrlCriteria(researcherCriteriaRequest.getCriteria().getName()); List> remoteRepos = remoteFetcher.getResearchers(externalUrlCriteria,null); ResearchersExternalSourcesModel researchersExternalSourcesModel = new ResearchersExternalSourcesModel().fromExternalItem(remoteRepos); @@ -53,8 +63,10 @@ public class ResearcherManager { eu.eudat.models.data.dmp.Researcher researcher = apiContext.getOperationsContext().getBuilderFactory().getBuilder(ResearcherBuilder.class) .label(externalListingItem.getAbbreviation()) .id(externalListingItem.getId()) + .reference(externalListingItem.getRemoteId()) .name(externalListingItem.getName()) .tag(externalListingItem.getTag()) + .key(externalListingItem.getKey()) .build(); researchers.add(researcher); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Researcher.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Researcher.java index c610c92e6..17779610e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Researcher.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Researcher.java @@ -4,18 +4,20 @@ import eu.eudat.models.DataModel; import eu.eudat.logic.utilities.helpers.LabelGenerator; import java.util.Date; +import java.util.UUID; public class Researcher implements DataModel, LabelGenerator { private String label; private String name; private String id; + private String reference; private int status; private String tag; + private String key; public String getLabel() { return label; } - public void setLabel(String label) { this.label = label; } @@ -23,7 +25,6 @@ public class Researcher implements DataModel> values) { for (Map item : values) { ExternalSourcesItemModel model = new ExternalSourcesItemModel(); - model.setId(item.get("pid")); + model.setRemoteId(item.get("pid")); model.setUri(item.get("uri")); model.setName(item.get("name")); model.setTag(item.get("tag")); + model.setKey(item.get("key")); this.add(model); } return this; diff --git a/dmp-frontend/src/app/core/model/researcher/researcher.ts b/dmp-frontend/src/app/core/model/researcher/researcher.ts index 0a1b250f6..6c5bf6a98 100644 --- a/dmp-frontend/src/app/core/model/researcher/researcher.ts +++ b/dmp-frontend/src/app/core/model/researcher/researcher.ts @@ -1,6 +1,7 @@ export interface ResearcherModel { id: String; name: String; + reference: String; lastName: String; uri: String; email: String; diff --git a/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts b/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts index f02ac1a82..f931e3451 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts @@ -159,9 +159,9 @@ export class GeneralTabComponent extends BaseComponent implements OnInit { const newItem = { label: null, name: fullName, - id: "dmp:" + fullName, + id: null, status: 0, - tag: "Internal", + key: "Internal", }; const researchersArray = this.formGroup.get('researchers').value || []; researchersArray.push(newItem);