From 7d4b4c171be7ee302ade20c4290e8c050857d814 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Fri, 20 Oct 2023 11:57:25 +0300 Subject: [PATCH 1/3] Apply some minor fixes --- .../eu/eudat/logic/managers/DataManagementPlanManager.java | 4 ++-- .../data/listingmodels/DataManagementPlanOverviewModel.java | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index 7d613fb22..af43c9f78 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -367,7 +367,7 @@ public class DataManagementPlanManager { throw new UnauthorisedException(); } else if (!isPublic && dataManagementPlanEntity.getUsers() - .stream().noneMatch(userInfo -> userInfo.getUser().getId() == this.userScope.getUserIdSafe())) { + .stream().noneMatch(userInfo -> userInfo.getUser().getId().equals(this.userScope.getUserIdSafe()))) { throw new UnauthorisedException(); } else if (isPublic && !dataManagementPlanEntity.isPublic()) { throw new ForbiddenException("Selected DMP is not public"); @@ -1321,7 +1321,7 @@ public class DataManagementPlanManager { XWPFDocument document = configLoader.getDocument(); DMP dmpEntity = databaseRepository.getDmpDao().find(UUID.fromString(id)); - if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> userInfo.getUser().getId() == this.userScope.getUserIdSafe()).collect(Collectors.toList()).size() == 0) + if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> userInfo.getUser().getId().equals(this.userScope.getUserIdSafe())).collect(Collectors.toList()).size() == 0) throw new UnauthorisedException(); wordBuilder.fillFirstPage(dmpEntity, null, document, false); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanOverviewModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanOverviewModel.java index 3ae741f0f..8c0911773 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanOverviewModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DataManagementPlanOverviewModel.java @@ -217,7 +217,11 @@ public class DataManagementPlanOverviewModel implements DataModel new Doi().fromDataModel(item)).collect(Collectors.toList()); + if (entity.getDois() != null) { + this.dois = entity.getDois().stream().map(item -> new Doi().fromDataModel(item)).collect(Collectors.toList()); + } else { + this.dois = new ArrayList<>(); + } return this; } From a94cce47e8d00ae09fd9e8c8fdcb14fb4bc14418 Mon Sep 17 00:00:00 2001 From: Thomas Georgios Giannos Date: Fri, 20 Oct 2023 16:48:55 +0300 Subject: [PATCH 2/3] Added DMP Entity (not integrated) --- .../eu/eudat/commons/enums/DMPStatus.java | 29 ++ .../main/java/eu/eudat/data/DMPEntity.java | 285 ++++++++++++++++++ .../converters/enums/DMPStatusConverter.java | 14 + .../src/main/java/eu/eudat/data/old/DMP.java | 1 - .../src/main/java/eu/eudat/model/DMP.java | 5 + .../eu/eudat/model/builder/DMPBuilder.java | 5 + .../eu/eudat/model/censorship/DMPCensor.java | 5 + .../eu/eudat/model/deleter/DMPDeleter.java | 5 + .../eu/eudat/model/persist/DMPPersist.java | 5 + .../main/java/eu/eudat/query/DMPQueryV2.java | 5 + .../java/eu/eudat/query/lookup/DMPLookup.java | 5 + .../java/eu/eudat/service/DMPService.java | 5 + .../java/eu/eudat/service/DMPServiceImpl.java | 5 + .../DescriptionTemplateTypeServiceImpl.java | 1 - 14 files changed, 373 insertions(+), 2 deletions(-) create mode 100644 dmp-backend/core/src/main/java/eu/eudat/commons/enums/DMPStatus.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/data/DMPEntity.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DMPStatusConverter.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/DMP.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/builder/DMPBuilder.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/censorship/DMPCensor.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/deleter/DMPDeleter.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/persist/DMPPersist.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/query/DMPQueryV2.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/query/lookup/DMPLookup.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/service/DMPService.java create mode 100644 dmp-backend/core/src/main/java/eu/eudat/service/DMPServiceImpl.java diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DMPStatus.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DMPStatus.java new file mode 100644 index 000000000..7fe183aad --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/DMPStatus.java @@ -0,0 +1,29 @@ +package eu.eudat.commons.enums; + +import eu.eudat.data.converters.enums.DatabaseEnum; + +import java.util.Map; + +public enum DMPStatus implements DatabaseEnum { + + ACTIVE((short) 0), FINALISED((short) 1),DELETED((short) 99); + + private final Short value; + + DMPStatus(Short value) { + this.value = value; + } + + @Override + public Short getValue() { + return null; + } + + private static final Map map = EnumUtils.getEnumValueMap(DMPStatus.class); + + public static DMPStatus of(Short i) { + return map.get(i); + } + + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/DMPEntity.java b/dmp-backend/core/src/main/java/eu/eudat/data/DMPEntity.java new file mode 100644 index 000000000..5c1451e38 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/data/DMPEntity.java @@ -0,0 +1,285 @@ +package eu.eudat.data; + +import eu.eudat.commons.enums.DMPStatus; +import eu.eudat.commons.enums.IsActive; +import eu.eudat.data.converters.DateToUTCConverter; +import eu.eudat.data.converters.enums.IsActiveConverter; +import jakarta.persistence.*; +import org.hibernate.annotations.GenericGenerator; + +import java.time.Instant; +import java.util.UUID; + +//TODO: (thgiannos) Wire up when all other dependent entities are refactored +//@Entity +//@Table(name = "\"DMP\"") +public class DMPEntity { + + @Id + @GeneratedValue + @GenericGenerator(name = "uuid2", strategy = "uuid2") + @Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)") + private UUID id; + + public static final String _id = "id"; + + @Column(name = "label") + private String label; + + public static final String _label = "label"; + + @Column(name = "version") + private Integer version; + + public static final String _version = "version"; + + @Enumerated(EnumType.STRING) + @Column(name = "status", nullable = false) + private DMPStatus status; + + public static final String _status = "status"; + + @Column(name = "properties") + private String properties; + + public static final String _properties = "properties"; + + @Column(name = "dmp_properties") + private String dmpProperties; + + public static final String _dmpProperties = "dmpProperties"; + + @Column(name = "group_id", columnDefinition = "BINARY(16)") + private UUID groupId; + + public static final String _groupId = "groupId"; + + @Column(name = "description") + private String description; + + public static final String _description = "description"; + + @Column(name = "is_public", nullable = false) + private boolean isPublic; + + public static final String _isPublic = "isPublic"; + + @Column(name = "extra_properties") + private String extraProperties; + + public static final String _extraProperties = "extraProperties"; + + @Column(name = "created_at") + @Convert(converter = DateToUTCConverter.class) + private Instant createdAt; + + public static final String _createdAt = "createdAt"; + + @Column(name = "updated_at") + @Convert(converter = DateToUTCConverter.class) + private Instant updatedAt; + + public static final String _updatedAt = "updatedAt"; + + @Column(name = "is_active", nullable = false) + @Convert(converter = IsActiveConverter.class) + private IsActive isActive; + + public static final String _isActive = "isActive"; + + //TODO: (thgiannos) Handle using the DMPEntity builder +// @OneToMany(mappedBy = "dmp", fetch = FetchType.LAZY) +// private Set dataset; + + // @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "\"Grant\"") + //TODO: (thgiannos) Previously 'Grant' + private UUID grant; + + //TODO: (thgiannos) Handle using the DMPEntity builder +// @OneToMany(fetch = FetchType.LAZY, mappedBy = "dmp") +// private Set associatedDmps; + + // @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "\"Profile\"") + //TODO: (thgiannos) Previously 'DMPProfile' + private UUID profile; + + // @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "\"Creator\"") + //TODO: (thgiannos) Previously 'UserInfo' + private UUID creator; + + //TODO: (thgiannos) Handle using the DMPEntity builder +// @OneToMany(mappedBy = "entityId", fetch = FetchType.LAZY) +// private Set dois; + + // @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "\"Project\"") + //TODO: (thgiannos) Previously 'Project' + private UUID project; + + // TODO: (thgiannos) Implement join entity +// @OneToMany(fetch = FetchType.LAZY) +// @JoinTable(name = "\"DMPOrganisation\"", +// joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}, +// inverseJoinColumns = {@JoinColumn(name = "\"Organisation\"", referencedColumnName = "\"ID\"")} +// ) +// private Set organisations; + + // TODO: (thgiannos) Implement join entity +// @OneToMany(fetch = FetchType.LAZY) +// @JoinTable(name = "\"DMPResearcher\"", +// joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}, +// inverseJoinColumns = {@JoinColumn(name = "\"Researcher\"", referencedColumnName = "\"ID\"")} +// ) +// private Set researchers; + + //TODO: (thgiannos) Handle using the DMPEntity builder +// private Set users; + +// @Column(name = "\"FinalizedAt\"") +// @Convert(converter = DateToUTCConverter.class) +// private Date finalizedAt; +// +// @Column(name = "\"PublishedAt\"") +// @Convert(converter = DateToUTCConverter.class) +// private Date publishedAt; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public Integer getVersion() { + return version; + } + + public void setVersion(Integer version) { + this.version = version; + } + + public DMPStatus getStatus() { + return status; + } + + public void setStatus(DMPStatus status) { + this.status = status; + } + + public String getProperties() { + return properties; + } + + public void setProperties(String properties) { + this.properties = properties; + } + + public String getDmpProperties() { + return dmpProperties; + } + + public void setDmpProperties(String dmpProperties) { + this.dmpProperties = dmpProperties; + } + + public UUID getGroupId() { + return groupId; + } + + public void setGroupId(UUID groupId) { + this.groupId = groupId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean getPublic() { + return isPublic; + } + + public void setPublic(boolean aPublic) { + isPublic = aPublic; + } + + public String getExtraProperties() { + return extraProperties; + } + + public void setExtraProperties(String extraProperties) { + this.extraProperties = extraProperties; + } + + public Instant getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Instant createdAt) { + this.createdAt = createdAt; + } + + public Instant getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Instant updatedAt) { + this.updatedAt = updatedAt; + } + + public IsActive getIsActive() { + return isActive; + } + + public void setIsActive(IsActive isActive) { + this.isActive = isActive; + } + + public UUID getGrant() { + return grant; + } + + public void setGrant(UUID grant) { + this.grant = grant; + } + + public UUID getProfile() { + return profile; + } + + public void setProfile(UUID profile) { + this.profile = profile; + } + + public UUID getCreator() { + return creator; + } + + public void setCreator(UUID creator) { + this.creator = creator; + } + + public UUID getProject() { + return project; + } + + public void setProject(UUID project) { + this.project = project; + } + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DMPStatusConverter.java b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DMPStatusConverter.java new file mode 100644 index 000000000..e55a52728 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/data/converters/enums/DMPStatusConverter.java @@ -0,0 +1,14 @@ +package eu.eudat.data.converters.enums; + +import eu.eudat.commons.enums.DMPStatus; +import jakarta.persistence.Converter; + +@Converter +public class DMPStatusConverter extends DatabaseEnumConverter { + + @Override + protected DMPStatus of(Short i) { + return DMPStatus.of(i); + } + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/data/old/DMP.java b/dmp-backend/core/src/main/java/eu/eudat/data/old/DMP.java index cf1c768f6..f11b96f13 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/data/old/DMP.java +++ b/dmp-backend/core/src/main/java/eu/eudat/data/old/DMP.java @@ -341,7 +341,6 @@ public class DMP implements DataEntity { this.publishedAt = publishedAt; } - //TODO: Dois will no longer be fetched by hibernate but using the query builders eventually. Use builder where this is called. public Set getDois() { return dois; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/DMP.java b/dmp-backend/core/src/main/java/eu/eudat/model/DMP.java new file mode 100644 index 000000000..99ba3b2bd --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/DMP.java @@ -0,0 +1,5 @@ +package eu.eudat.model; + +public class DMP { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/DMPBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DMPBuilder.java new file mode 100644 index 000000000..dbf3a8ecd --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/DMPBuilder.java @@ -0,0 +1,5 @@ +package eu.eudat.model.builder; + +public class DMPBuilder { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DMPCensor.java b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DMPCensor.java new file mode 100644 index 000000000..03a0377bb --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/censorship/DMPCensor.java @@ -0,0 +1,5 @@ +package eu.eudat.model.censorship; + +public class DMPCensor { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/deleter/DMPDeleter.java b/dmp-backend/core/src/main/java/eu/eudat/model/deleter/DMPDeleter.java new file mode 100644 index 000000000..a328d55a5 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/deleter/DMPDeleter.java @@ -0,0 +1,5 @@ +package eu.eudat.model.deleter; + +public class DMPDeleter { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/DMPPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DMPPersist.java new file mode 100644 index 000000000..8094758b8 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/DMPPersist.java @@ -0,0 +1,5 @@ +package eu.eudat.model.persist; + +public class DMPPersist { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DMPQueryV2.java b/dmp-backend/core/src/main/java/eu/eudat/query/DMPQueryV2.java new file mode 100644 index 000000000..920f8e836 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DMPQueryV2.java @@ -0,0 +1,5 @@ +package eu.eudat.query; + +public class DMPQueryV2 { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DMPLookup.java b/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DMPLookup.java new file mode 100644 index 000000000..74b1202e1 --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/query/lookup/DMPLookup.java @@ -0,0 +1,5 @@ +package eu.eudat.query.lookup; + +public class DMPLookup { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/DMPService.java b/dmp-backend/core/src/main/java/eu/eudat/service/DMPService.java new file mode 100644 index 000000000..48028049c --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/service/DMPService.java @@ -0,0 +1,5 @@ +package eu.eudat.service; + +public interface DMPService { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/DMPServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/DMPServiceImpl.java new file mode 100644 index 000000000..0d687e17f --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/service/DMPServiceImpl.java @@ -0,0 +1,5 @@ +package eu.eudat.service; + +public class DMPServiceImpl implements DMPService { + +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java index 993021564..ee142e740 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/DescriptionTemplateTypeServiceImpl.java @@ -39,7 +39,6 @@ import java.util.List; import java.util.UUID; @Service -@RequestScope public class DescriptionTemplateTypeServiceImpl implements DescriptionTemplateTypeService { private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(DescriptionTemplateTypeServiceImpl.class)); From 0bd3ff6898f438a2e0f9ce2eb18e750d053462c7 Mon Sep 17 00:00:00 2001 From: amentis Date: Fri, 20 Oct 2023 17:44:41 +0300 Subject: [PATCH 3/3] fix external references enums --- .../commons/enums/ExternalReferencesType.java | 20 ++++++----- .../v2/ExternalReferencesController.java | 7 ++-- ...java => ExternalValidationController.java} | 12 +++---- .../logic/proxy/fetching/RemoteFetcher.java | 2 +- ...ce.java => ExternalValidationService.java} | 4 +-- .../ExternalReferencesService.java | 2 +- .../common/enum/external-references-type.ts | 18 ++++++++++ .../external-reference/external-reference.ts | 19 +++++++++++ .../external-sources.service.ts | 10 +++++- .../form-field/form-field.component.ts | 34 ++++++++++--------- 10 files changed, 89 insertions(+), 39 deletions(-) rename dmp-backend/web/src/main/java/eu/eudat/controllers/v2/{ValidationController.java => ExternalValidationController.java} (73%) rename dmp-backend/web/src/main/java/eu/eudat/logic/services/{ValidationService.java => ExternalValidationService.java} (87%) create mode 100644 dmp-frontend/src/app/core/common/enum/external-references-type.ts create mode 100644 dmp-frontend/src/app/core/model/external-reference/external-reference.ts diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java index f7a82ec47..982cd7a57 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/ExternalReferencesType.java @@ -1,8 +1,10 @@ package eu.eudat.commons.enums; +import eu.eudat.data.converters.enums.DatabaseEnum; + import java.util.Map; -public enum ExternalReferencesType { +public enum ExternalReferencesType implements DatabaseEnum { Taxonomies((short) 0), Licenses((short) 1), Publications((short) 2), @@ -12,13 +14,13 @@ public enum ExternalReferencesType { Registries((short) 6), Services((short) 7), Project((short) 8), - Founder((short) 8), - Datasets((short) 9), - Organizations((short) 10), - Grants((short) 11), - Prefillings((short) 12), + Funder((short) 9), + Datasets((short) 10), + Organizations((short) 11), + Grants((short) 12), Validators((short) 13), - Researcher((short) 14); + Researcher((short) 14), + Prefillings((short) 15); private final Short value; ExternalReferencesType(Short value) { @@ -29,9 +31,9 @@ public enum ExternalReferencesType { return value; } - private static final Map map = EnumUtils.getEnumValueMap(IsActive.class); + private static final Map map = EnumUtils.getEnumValueMap(ExternalReferencesType.class); - public static IsActive of(Short i) { + public static ExternalReferencesType of(Short i) { return map.get(i); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalReferencesController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalReferencesController.java index e4324ec1b..172dace66 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalReferencesController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalReferencesController.java @@ -70,14 +70,15 @@ public class ExternalReferencesController extends BaseController { - @GetMapping(path = {"data-repo/{externalType}"}, produces = "application/json") - public @ResponseBody ResponseEntity>> listExternalReferecnes(@RequestParam(value = "externalType") ExternalReferencesType externalType, + @GetMapping(path = {"{externalType}"}, produces = "application/json") + public @ResponseBody ResponseEntity>> listExternalReferecnes(@PathVariable(value = "externalType") int externalType, @RequestParam(value = "query", required = false) String query, @RequestParam(value = "type", required = false) String type ) throws HugeResultSet, NoURLFound, InvalidApplicationException { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); + ExternalReferencesType externalReferencesType = ExternalReferencesType.of((short) externalType); - List externalReferences = this.externalReferencesService.getExternalReference(externalType, query, type); + List externalReferences = this.externalReferencesService.getExternalReference(externalReferencesType, query, type); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(externalReferences)); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ValidationController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java similarity index 73% rename from dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ValidationController.java rename to dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java index e94e919dc..018e7753f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ValidationController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/ExternalValidationController.java @@ -5,7 +5,7 @@ import eu.eudat.controllers.BaseController; import eu.eudat.logic.proxy.config.exceptions.HugeResultSet; import eu.eudat.logic.proxy.config.exceptions.NoURLFound; import eu.eudat.logic.services.ApiContext; -import eu.eudat.logic.services.ValidationService; +import eu.eudat.logic.services.ExternalValidationService; import eu.eudat.models.data.helpers.responses.ResponseItem; import eu.eudat.types.ApiMessageCode; import gr.cite.commons.web.authz.service.AuthorizationService; @@ -17,15 +17,15 @@ import org.springframework.web.bind.annotation.*; @RestController @CrossOrigin @RequestMapping(path = {"api/validation"}) -public class ValidationController extends BaseController { +public class ExternalValidationController extends BaseController { - private ValidationService validationService; + private ExternalValidationService externalValidationService; private final AuthorizationService authorizationService; @Autowired - public ValidationController(ApiContext apiContext, ValidationService validationService, AuthorizationService authorizationService) { + public ExternalValidationController(ApiContext apiContext, ExternalValidationService externalValidationService, AuthorizationService authorizationService) { super(apiContext); - this.validationService = validationService; + this.externalValidationService = externalValidationService; this.authorizationService = authorizationService; } @@ -36,7 +36,7 @@ public class ValidationController extends BaseController { ) throws HugeResultSet, NoURLFound { this.authorizationService.authorizeForce(Permission.AuthenticatedRole); - Boolean isValid = this.validationService.validateIdentifier(query, type); + Boolean isValid = this.externalValidationService.validateIdentifier(query, type); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().payload(isValid).status(ApiMessageCode.NO_MESSAGE)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java index f67e3ce66..9b1828e4e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/proxy/fetching/RemoteFetcher.java @@ -73,7 +73,7 @@ public class RemoteFetcher { case Grants: return configLoader.getExternalUrls().getGrants(); case Organizations: return configLoader.getExternalUrls().getOrganisations(); case Datasets: return configLoader.getExternalUrls().getDatasets(); - case Founder: return configLoader.getExternalUrls().getFunders(); + case Funder: return configLoader.getExternalUrls().getFunders(); case Project: return configLoader.getExternalUrls().getProjects(); case Researcher: return configLoader.getExternalUrls().getResearchers(); case Validators: return configLoader.getExternalUrls().getValidations(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/ValidationService.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java similarity index 87% rename from dmp-backend/web/src/main/java/eu/eudat/logic/services/ValidationService.java rename to dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java index 689f22823..359f0ce56 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/ValidationService.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/ExternalValidationService.java @@ -9,13 +9,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service -public class ValidationService { +public class ExternalValidationService { private RemoteFetcher remoteFetcher; private final UserScope userScope; @Autowired - public ValidationService(RemoteFetcher remoteFetcher, UserScope userScope) { + public ExternalValidationService(RemoteFetcher remoteFetcher, UserScope userScope) { super(); this.remoteFetcher = remoteFetcher; this.userScope = userScope; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/services/externalreferences/ExternalReferencesService.java b/dmp-backend/web/src/main/java/eu/eudat/logic/services/externalreferences/ExternalReferencesService.java index c38d31b11..6185fa570 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/services/externalreferences/ExternalReferencesService.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/services/externalreferences/ExternalReferencesService.java @@ -25,7 +25,7 @@ import java.util.Map; import java.util.stream.Collectors; @org.springframework.stereotype.Service -public class ExternalReferencesService {//implements ExternalReferencesService{ +public class ExternalReferencesService { private final ApiContext apiContext; private final UserScope userScope; diff --git a/dmp-frontend/src/app/core/common/enum/external-references-type.ts b/dmp-frontend/src/app/core/common/enum/external-references-type.ts new file mode 100644 index 000000000..0a9771138 --- /dev/null +++ b/dmp-frontend/src/app/core/common/enum/external-references-type.ts @@ -0,0 +1,18 @@ +export enum ExternalReferencesType { + Taxonomies = 0, + Licenses = 1, + Publications = 2, + Journals = 3, + PubRepositories = 4, + DataRepositories = 5, + Registries = 6, + Services = 7, + Project = 8, + Funder = 9, + Datasets = 10, + Organizations = 11, + Grants = 12, + Validators = 13, + Researcher = 14, + Prefillings = 15 +} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/external-reference/external-reference.ts b/dmp-frontend/src/app/core/model/external-reference/external-reference.ts new file mode 100644 index 000000000..031e03161 --- /dev/null +++ b/dmp-frontend/src/app/core/model/external-reference/external-reference.ts @@ -0,0 +1,19 @@ +export interface ExternalReference { + id: string; + name: string; + abbreviation: string; + pid: string; + originalId: string; + key: string; + pidTypeField: string; + uri: string; + description: string; + source: string; + count: string; + path: string; + host: string; + types: string; + firstName: string; + lastName: string; + tag: string; +} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts b/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts index 7aa2644fd..8055fe9eb 100644 --- a/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts +++ b/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts @@ -14,7 +14,8 @@ import { BaseHttpService } from '../http/base-http.service'; import { ConfigurationService } from '../configuration/configuration.service'; import { LicenseCriteria } from '@app/core/query/license/license-criteria'; import {PublicationCriteria} from "@app/core/query/publication/publication-criteria"; - +import { ExternalReference } from '@app/core/model/external-reference/external-reference'; +import { ExternalReferencesType } from '@app/core/common/enum/external-references-type'; @Injectable() export class ExternalSourcesService { @@ -58,6 +59,13 @@ export class ExternalSourcesService { return this.http.get(this.actionUrl + 'licenses' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); } + public listExternal(externalType: ExternalReferencesType, query: string, type: string): Observable { + const url = this.configurationService.server + `external-references/${externalType}`; + const options = { params: { query: query, type: type } }; + + return this.http.get(url, options); + } + public searchDatasetTags(requestItem: RequestItem): Observable { // return Observable.of([ // { id: '1', name: 'Tag 1', description: '' }, diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts index c19014f99..71ab68b3d 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts @@ -48,6 +48,8 @@ import {MatDialog} from "@angular/material/dialog"; import {HttpError} from "@common/modules/errors/error-handling/http-error-handling.service"; import {HttpErrorResponse} from "@angular/common/http"; import * as FileSaver from "file-saver"; +import { ExternalReference } from '@app/core/model/external-reference/external-reference'; +import { ExternalReferencesType } from '@app/core/common/enum/external-references-type'; @Component({ selector: 'app-form-field', @@ -470,63 +472,63 @@ export class FormFieldComponent extends BaseComponent implements OnInit { return this.externalSourcesService.searchDatasetSExternalDatasetservice(requestItem); } - searchDatasetExternalDataRepositories(query: string): Observable { + searchDatasetExternalDataRepositories(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new DataRepositoryCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchDatasetRepository(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.DataRepositories, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalPubRepositories(query: string): Observable { + searchDatasetExternalPubRepositories(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new DataRepositoryCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchPublicationRepository(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.PubRepositories, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalJournalRepositories(query: string): Observable { + searchDatasetExternalJournalRepositories(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new DataRepositoryCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchJournals(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.Journals, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalTaxonomies(query: string): Observable { + searchDatasetExternalTaxonomies(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new TaxonomyCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchTaxonomies(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.Taxonomies, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalLicences(query: string): Observable { + searchDatasetExternalLicences(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new LicenseCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchLicense(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.Licenses, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalPublications(query: string): Observable { + searchDatasetExternalPublications(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new PublicationCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchPublications(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.Publications, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalRegistries(query: string): Observable { + searchDatasetExternalRegistries(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new RegistryCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchDatasetRegistry(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.Registries, requestItem.criteria.like, requestItem.criteria.type); } - searchDatasetExternalServices(query: string): Observable { + searchDatasetExternalServices(query: string): Observable { const requestItem: RequestItem = new RequestItem(); requestItem.criteria = new ServiceCriteria(); requestItem.criteria.like = query; requestItem.criteria.type = ''; - return this.externalSourcesService.searchDatasetService(requestItem); + return this.externalSourcesService.listExternal(ExternalReferencesType.Services, requestItem.criteria.like, requestItem.criteria.type); } searchDatasetTags(query: string): Observable {