diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java index b9bd932af..c3ac2a087 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java @@ -48,6 +48,7 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder authorize = EnumSet.of(AuthorizationFlags.None); + private String repositoryId; @Autowired public DescriptionCommonModelBuilder( @@ -73,6 +74,11 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder> buildInternal(List data) throws MyApplicationException { this.logger.debug("building for {}", Optional.ofNullable(data).map(List::size).orElse(0)); @@ -154,7 +160,7 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder itemMap; DmpQuery q = this.queryFactory.query(DmpQuery.class).authorize(this.authorize).ids(data.stream().map(DescriptionEntity::getDmpId).distinct().collect(Collectors.toList())); - itemMap = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(useSharedStorage).setDisableDescriptions(true).authorize(this.authorize).asForeignKey(q, DmpEntity::getId); + itemMap = this.builderFactory.builder(DmpCommonModelBuilder.class).setRepositoryId(repositoryId).useSharedStorage(useSharedStorage).setDisableDescriptions(true).authorize(this.authorize).asForeignKey(q, DmpEntity::getId); return itemMap; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java index be82ab1a7..db9359d3a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java @@ -149,7 +149,7 @@ public class FieldCommonModelBuilder extends BaseCommonModelBuilder itemMap; - ReferenceQuery q = this.queryFactory.query(ReferenceQuery.class).authorize(this.authorize).ids(data.stream().map(FieldEntity::getTextListValue).flatMap(List::stream).map(UUID::fromString).distinct().collect(Collectors.toList())); + ReferenceQuery q = this.queryFactory.query(ReferenceQuery.class).authorize(this.authorize).ids(data.stream().filter(x-> x.getTextListValue() != null).map(FieldEntity::getTextListValue).flatMap(List::stream).filter(x-> !this.conventionService.isNullOrEmpty(x)).map(UUID::fromString).distinct().collect(Collectors.toList())); itemMap = this.builderFactory.builder(ReferenceCommonModelBuilder.class).authorize(this.authorize).asForeignKey(q, ReferenceEntity::getId); return itemMap; diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java index bad3c1ea0..6f5729bef 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java @@ -195,7 +195,7 @@ public class DmpCommonModelBuilder extends BaseCommonModelBuilder> itemMap; DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).authorize(this.authorize).dmpIds(data.stream().map(DmpEntity::getId).distinct().collect(Collectors.toList())); - itemMap = this.builderFactory.builder(DescriptionCommonModelBuilder.class).useSharedStorage(useSharedStorage).authorize(this.authorize).asMasterKey(query, DescriptionEntity::getDmpId); + itemMap = this.builderFactory.builder(DescriptionCommonModelBuilder.class).setRepositoryId(repositoryId).useSharedStorage(useSharedStorage).authorize(this.authorize).asMasterKey(query, DescriptionEntity::getDmpId); return itemMap; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java b/dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java new file mode 100644 index 000000000..21779ae1d --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java @@ -0,0 +1,49 @@ +package eu.eudat.model.file; + +import eu.eudat.file.transformer.models.misc.FileFormat; + +public class RepositoryFileFormat { + private String format; + private Boolean hasLogo; + private String icon; + private String repositoryId; + + public RepositoryFileFormat(String repositoryId, FileFormat format) { + this.repositoryId = repositoryId; + this.format = format.getFormat(); + this.hasLogo = format.getHasLogo(); + this.icon = format.getIcon(); + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + + public Boolean getHasLogo() { + return hasLogo; + } + + public void setHasLogo(Boolean hasLogo) { + this.hasLogo = hasLogo; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getRepositoryId() { + return repositoryId; + } + + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java index acdf587f9..4cea81ea5 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java @@ -349,6 +349,8 @@ public class DescriptionTemplateQuery extends QueryBase uriBuilder.queryParam("format", format).build()).bodyValue(dmpModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); + return transformerClient.post().uri("/export/dmp", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(dmpModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); } @Override public DmpModel importDmp(FileEnvelopeModel fileEnvelope) { - return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DmpModel.class)).block(); + return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(DmpModel.class)).block(); } @Override public FileEnvelopeModel exportDescription(DescriptionModel descriptionModel, String format) { - return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); + return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); } @Override public DescriptionModel importDescription(FileEnvelopeModel fileEnvelope) { - return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DescriptionModel.class)).block(); + return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(DescriptionModel.class)).block(); } @Override public FileTransformerConfiguration getConfiguration() { - return transformerClient.get().uri("/formats").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); + return transformerClient.get().uri("/formats").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java index e255d3aa8..ce4ad1129 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java @@ -3,6 +3,8 @@ package eu.eudat.service.deposit; import eu.eudat.depositinterface.repository.DepositClient; import eu.eudat.depositinterface.repository.DepositConfiguration; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; import eu.eudat.commonmodels.models.dmp.DmpModel; @@ -17,21 +19,21 @@ public class DepositClientImpl implements DepositClient { @Override public String deposit(DmpModel dmpDepositModel, String repositoryAccessToken) throws Exception { - return depositClient.post().uri("/", uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); + return depositClient.post().uri("/", uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); } @Override public String authenticate(String code) { - return depositClient.get().uri("/authenticate/", uriBuilder -> uriBuilder.queryParam("authToken", code).build()).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); + return depositClient.get().uri("/authenticate/", uriBuilder -> uriBuilder.queryParam("authToken", code).build()).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); } @Override public DepositConfiguration getConfiguration() { - return depositClient.get().uri("/configuration").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); + return depositClient.get().uri("/configuration").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); } @Override public String getLogo() { - return depositClient.get().uri("/logo/").exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); + return depositClient.get().uri("/logo/").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java index cf844c57b..440bf3e81 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java @@ -58,7 +58,6 @@ public class DepositServiceImpl implements DepositService { private final Map clients; private final TokenExchangeCacheService tokenExchangeCacheService; private final AuthorizationService authorizationService; - private final WebClient.Builder webClientBuilder; private final EntityDoiService doiService; private final QueryFactory queryFactory; private final MessageSource messageSource; @@ -69,21 +68,18 @@ public class DepositServiceImpl implements DepositService { private final UserScope userScope; private final ValidatorFactory validatorFactory; private final StorageFileProperties storageFileProperties; - private final ConventionService conventionService; private final AuthorizationContentResolver authorizationContentResolver; @Autowired public DepositServiceImpl(DepositProperties depositProperties, TokenExchangeCacheService tokenExchangeCacheService, - WebClient.Builder builder, AuthorizationService authorizationService, EntityDoiService doiService, QueryFactory queryFactory, MessageSource messageSource, - BuilderFactory builderFactory, DepositConfigurationCacheService depositConfigurationCacheService, FileTransformerService fileTransformerService, StorageFileService storageFileService, UserScope userScope, ValidatorFactory validatorFactory, StorageFileProperties storageFileProperties, ConventionService conventionService, AuthorizationContentResolver authorizationContentResolver) { + BuilderFactory builderFactory, DepositConfigurationCacheService depositConfigurationCacheService, FileTransformerService fileTransformerService, StorageFileService storageFileService, UserScope userScope, ValidatorFactory validatorFactory, StorageFileProperties storageFileProperties, AuthorizationContentResolver authorizationContentResolver) { this.depositProperties = depositProperties; this.tokenExchangeCacheService = tokenExchangeCacheService; this.authorizationService = authorizationService; - this.webClientBuilder = builder; this.doiService = doiService; this.queryFactory = queryFactory; this.messageSource = messageSource; @@ -94,7 +90,6 @@ public class DepositServiceImpl implements DepositService { this.userScope = userScope; this.validatorFactory = validatorFactory; this.storageFileProperties = storageFileProperties; - this.conventionService = conventionService; this.authorizationContentResolver = authorizationContentResolver; this.clients = new HashMap<>(); } @@ -108,7 +103,7 @@ public class DepositServiceImpl implements DepositService { String host = URI.create(source.getUrl()).getHost(); TokenExchangeModel tokenExchangeModel = new TokenExchangeModel("deposit:" + source.getRepositoryId(), source.getIssuerUrl(), source.getClientId(), source.getClientSecret(), source.getScope()); TokenExchangeFilterFunction apiKeyExchangeFilterFunction = new TokenExchangeFilterFunction(this.tokenExchangeCacheService, tokenExchangeModel); - WebClient webClient = webClientBuilder.baseUrl(source.getUrl() + "/api/deposit").filters(exchangeFilterFunctions -> exchangeFilterFunctions.add(apiKeyExchangeFilterFunction)).build(); + WebClient webClient = WebClient.builder().baseUrl(source.getUrl() + "/api/deposit").filters(exchangeFilterFunctions -> exchangeFilterFunctions.add(apiKeyExchangeFilterFunction)).build(); DepositClientImpl repository = new DepositClientImpl(webClient); this.clients.put(source.getRepositoryId(), repository); return repository; diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java index df697bb84..cdce26d26 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java @@ -780,7 +780,7 @@ public class DescriptionServiceImpl implements DescriptionService { public ResponseEntity export(UUID id, String exportType) throws InvalidApplicationException, IOException { HttpHeaders headers = new HttpHeaders(); - FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(id, exportType); + FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(id, null, exportType); //TODO get repo from config headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename()); byte[] data = fileEnvelope.getFile(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java index 674259823..487bd4347 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java @@ -1,14 +1,15 @@ package eu.eudat.service.transformer; import eu.eudat.file.transformer.models.misc.FileFormat; +import eu.eudat.model.file.RepositoryFileFormat; import java.util.List; import java.util.UUID; public interface FileTransformerService { - List getAvailableExportFileFormats(); + List getAvailableExportFileFormats(); eu.eudat.model.file.FileEnvelope exportDmp(UUID dmpId, String repositoryId, String format); - eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String format); + eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String repositoryId, String format); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java index dff99f04b..88143c9b6 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java @@ -13,6 +13,7 @@ import eu.eudat.model.Description; import eu.eudat.model.Dmp; import eu.eudat.model.builder.commonmodels.description.DescriptionCommonModelBuilder; import eu.eudat.model.builder.commonmodels.dmp.DmpCommonModelBuilder; +import eu.eudat.model.file.RepositoryFileFormat; import eu.eudat.model.file.TransformerCacheModel; import eu.eudat.query.DescriptionQuery; import eu.eudat.query.DmpQuery; @@ -47,20 +48,18 @@ public class FileTransformerServiceImpl implements FileTransformerService { private final TokenExchangeCacheService tokenExchangeCacheService; private final FileTransformerConfigurationCache fileTransformerConfigurationCache; private final AuthorizationService authorizationService; - private final WebClient.Builder webClientBuilder; private final QueryFactory queryFactory; private final BuilderFactory builderFactory; private final StorageFileService storageFileService; private final MessageSource messageSource; @Autowired - public FileTransformerServiceImpl(TransformerProperties transformerProperties, TokenExchangeCacheService tokenExchangeCacheService, FileTransformerConfigurationCache fileTransformerConfigurationCache, WebClient.Builder builder, AuthorizationService authorizationService, + public FileTransformerServiceImpl(TransformerProperties transformerProperties, TokenExchangeCacheService tokenExchangeCacheService, FileTransformerConfigurationCache fileTransformerConfigurationCache, AuthorizationService authorizationService, QueryFactory queryFactory, BuilderFactory builderFactory, StorageFileService storageFileService, MessageSource messageSource) { this.transformerProperties = transformerProperties; this.tokenExchangeCacheService = tokenExchangeCacheService; this.fileTransformerConfigurationCache = fileTransformerConfigurationCache; this.authorizationService = authorizationService; - this.webClientBuilder = builder; this.queryFactory = queryFactory; this.builderFactory = builderFactory; this.storageFileService = storageFileService; @@ -72,16 +71,17 @@ public class FileTransformerServiceImpl implements FileTransformerService { if (this.clients.containsKey(repoId)) return this.clients.get(repoId); //GK: It's register time - TransformerProperties.TransformerSource source = transformerProperties.getSources().stream().filter(depositSource -> depositSource.getCodes().contains(repoId)).findFirst().orElse(null); + TransformerProperties.TransformerSource source = transformerProperties.getSources().stream().filter(depositSource -> depositSource.getTransformerId().equals(repoId)).findFirst().orElse(null); if (source != null) { String host = URI.create(source.getUrl()).getHost(); TokenExchangeModel tokenExchangeModel = new TokenExchangeModel(host + "_" + source.getClientId(), source.getIssuerUrl(), source.getClientId(), source.getClientSecret(), source.getScope()); TokenExchangeFilterFunction tokenExchangeFilterFunction = new TokenExchangeFilterFunction(this.tokenExchangeCacheService, tokenExchangeModel); - TransformerRepository repository = new TransformerRepository(webClientBuilder.baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> { + + TransformerRepository repository = new TransformerRepository(WebClient.builder().baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> { exchangeFilterFunctions.add(tokenExchangeFilterFunction); exchangeFilterFunctions.add(logRequest()); }).build()); - source.getCodes().forEach(code -> this.clients.put(code, repository)); + this.clients.put(source.getTransformerId(), repository); return repository; } return null; @@ -89,12 +89,12 @@ public class FileTransformerServiceImpl implements FileTransformerService { @Override - public List getAvailableExportFileFormats() { - List formats = new ArrayList<>(); + public List getAvailableExportFileFormats() { + List formats = new ArrayList<>(); List configurations = this.getAvailableConfigurations(); if(configurations != null){ for (FileTransformerConfiguration configuration : configurations){ - if (configuration != null && configuration.getExportVariants() != null) formats.addAll(configuration.getExportVariants()); + if (configuration != null && configuration.getExportVariants() != null) formats.addAll(configuration.getExportVariants().stream().map(x-> new RepositoryFileFormat(configuration.getFileTransformerId(), x)).toList()); } } return formats; @@ -105,7 +105,7 @@ public class FileTransformerServiceImpl implements FileTransformerService { if (configs == null) { List configurations = new ArrayList<>(); //GK: So much for lazy loading - List repositories = transformerProperties.getSources().stream().map(depositSource -> getRepository(depositSource.getCodes().getFirst())).toList(); + List repositories = transformerProperties.getSources().stream().map(depositSource -> getRepository(depositSource.getTransformerId())).toList(); repositories = new ArrayList<>(repositories); repositories.forEach((client) -> { @@ -131,10 +131,10 @@ public class FileTransformerServiceImpl implements FileTransformerService { this.authorizationService.authorize(Permission.EditDmp); //GK: First get the right client TransformerRepository repository = getRepository(repositoryId); - if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{repositoryId, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); + if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); //GK: Second get the Target Data Management Plan DmpQuery query = this.queryFactory.query(DmpQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(dmpId); - DmpModel dmpFileTransformerModel = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); + DmpModel dmpFileTransformerModel = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).setRepositoryId(repository.getConfiguration().getFileTransformerId()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); if (dmpFileTransformerModel == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{dmpId, Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale())); FileEnvelopeModel fileEnvelope = repository.exportDmp(dmpFileTransformerModel, format); @@ -147,15 +147,15 @@ public class FileTransformerServiceImpl implements FileTransformerService { } @Override - public eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String format) { + public eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String repositoryId, String format) { this.authorizationService.authorize(Permission.EditDmp); //GK: First get the right client - TransformerRepository repository = getRepository(format); + TransformerRepository repository = getRepository(repositoryId); if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); //GK: Second get the Target Data Management Plan DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(descriptionId); - DescriptionModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); + DescriptionModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionCommonModelBuilder.class).setRepositoryId(repository.getConfiguration().getFileTransformerId()).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); if (descriptionFileTransformerModel == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{descriptionId, Description.class.getSimpleName()}, LocaleContextHolder.getLocale())); FileEnvelopeModel fileEnvelope = repository.exportDescription(descriptionFileTransformerModel, format); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java index c1289bdfc..44d9bd58f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java @@ -26,7 +26,7 @@ public class VisibilityServiceImpl implements VisibilityService { } private void initRules(){ - if (this.rulesBySources == null) return; + if (this.rulesBySources != null) return; rulesBySources = new HashMap<>(); for (FieldEntity fieldEntity : this.definition.getAllField()){ if (fieldEntity.getVisibilityRules() != null && !fieldEntity.getVisibilityRules().isEmpty()) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java index a06b1642b..524f2fc7c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java @@ -1,9 +1,9 @@ package eu.eudat.controllers; import eu.eudat.audit.AuditableAction; -import eu.eudat.file.transformer.models.misc.FileFormat; import eu.eudat.model.file.ExportRequestModel; import eu.eudat.model.file.FileEnvelope; +import eu.eudat.model.file.RepositoryFileFormat; import eu.eudat.service.transformer.FileTransformerService; import gr.cite.tools.auditing.AuditService; import gr.cite.tools.logging.LoggerService; @@ -37,10 +37,10 @@ public class FileTransformerController { } @GetMapping("/available") - public List getAvailableConfigurations() { + public List getAvailableConfigurations() { logger.debug(new MapLogEntry("getAvailableConfigurations")); - List model = this.fileTransformerService.getAvailableExportFileFormats(); + List model = this.fileTransformerService.getAvailableExportFileFormats(); this.auditService.track(AuditableAction.FileTransformer_GetAvailableConfigurations); //this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action); @@ -60,11 +60,11 @@ public class FileTransformerController { } @PostMapping("/export-description") - public ResponseEntity exportDescription(@RequestBody ExportRequestModel requestModel) throws InvalidApplicationException, IOException { + public ResponseEntity exportDescription(@RequestBody ExportRequestModel requestModel) { logger.debug(new MapLogEntry("exporting dmp")); HttpHeaders headers = new HttpHeaders(); - FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(requestModel.getId(), requestModel.getFormat()); + FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(requestModel.getId(), requestModel.getRepositoryId(), requestModel.getFormat()); headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename()); byte[] data = fileEnvelope.getFile(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); diff --git a/dmp-backend/web/src/main/resources/config/deposit.yml b/dmp-backend/web/src/main/resources/config/deposit.yml index 46cb35c1a..3521465bf 100644 --- a/dmp-backend/web/src/main/resources/config/deposit.yml +++ b/dmp-backend/web/src/main/resources/config/deposit.yml @@ -4,7 +4,7 @@ deposit: repositoryId: zenodo pdfTransformerId: docx-file-transformer rdaTransformerId: rda-file-transformer - issuer-url: ${ZENODO_ISSUER_URI:IDP_APIKEY_ISSUER_URI}/protocol/openid-connect/token - client-id: ${ZENODO_DEPOSIT_CLIENT_ID:} - client-secret: ${ZENODO_DEPOSIT_CLIENT_SECRET:} - scope: ${ZENODO_DEPOSIT_SCOPE:} \ No newline at end of file + issuer-url: ${IDP_ISSUER_URI_TOKEN} + client-id: ${ZENODO_DEPOSIT_CLIENT_ID} + client-secret: ${ZENODO_DEPOSIT_CLIENT_SECRET} + scope: ${ZENODO_DEPOSIT_SCOPE} \ No newline at end of file diff --git a/dmp-backend/web/src/main/resources/config/transformer.yml b/dmp-backend/web/src/main/resources/config/transformer.yml index 0b7659490..5d88f95c0 100644 --- a/dmp-backend/web/src/main/resources/config/transformer.yml +++ b/dmp-backend/web/src/main/resources/config/transformer.yml @@ -3,21 +3,14 @@ transformer: - url: http://dev04.local.cite.gr:55330/file/docx transformerId: docx-file-transformer codes: [ docx, pdf ] - issuer-url: ${IDP_ISSUER_URI_TOKEN:} - client-id: ${IDP_APIKEY_CLIENT_ID:} - client-secret: ${IDP_APIKEY_CLIENT_SECRET:} - scope: ${IDP_APIKEY_SCOPE:} + issuer-url: ${IDP_ISSUER_URI_TOKEN} + client-id: ${IDP_APIKEY_CLIENT_ID} + client-secret: ${IDP_APIKEY_CLIENT_SECRET} + scope: ${IDP_APIKEY_SCOPE} - url: http://dev04.local.cite.gr:55330/file/rdajson transformerId: rda-file-transformer codes: [ json ] - issuer-url: ${IDP_ISSUER_URI_TOKEN:} - client-id: ${IDP_APIKEY_CLIENT_ID:} - client-secret: ${IDP_APIKEY_CLIENT_SECRET:} - scope: ${IDP_APIKEY_SCOPE:} - - url: http://localhost:8087 - transformerId: import-export-file-transformer - codes: [ xml ] - issuer-url: ${IDP_ISSUER_URI_TOKEN:} - client-id: ${IDP_APIKEY_CLIENT_ID:} - client-secret: ${IDP_APIKEY_CLIENT_SECRET:} - scope: ${IDP_APIKEY_SCOPE:} + issuer-url: ${IDP_ISSUER_URI_TOKEN} + client-id: ${IDP_APIKEY_CLIENT_ID} + client-secret: ${IDP_APIKEY_CLIENT_SECRET} + scope: ${IDP_APIKEY_SCOPE} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/file/file-format.model.ts b/dmp-frontend/src/app/core/model/file/file-format.model.ts index 98f9ff5e5..5d78198e5 100644 --- a/dmp-frontend/src/app/core/model/file/file-format.model.ts +++ b/dmp-frontend/src/app/core/model/file/file-format.model.ts @@ -1,5 +1,6 @@ -export interface FileFormat { +export interface RepositoryFileFormat { format: string; hasLogo: boolean; icon: string; + repositoryId: string; } diff --git a/dmp-frontend/src/app/core/services/description/description.service.ts b/dmp-frontend/src/app/core/services/description/description.service.ts index 3c07826e3..f45ae4bb7 100644 --- a/dmp-frontend/src/app/core/services/description/description.service.ts +++ b/dmp-frontend/src/app/core/services/description/description.service.ts @@ -13,7 +13,6 @@ import { catchError, map } from 'rxjs/operators'; import { nameof } from 'ts-simple-nameof'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { BaseHttpParams } from '@common/http/base-http-params'; import { InterceptorType } from '@common/http/interceptors/interceptor-type'; import { DescriptionValidationResult } from '@app/ui/dmp/dmp-finalize-dialog/dmp-finalize-dialog.component'; diff --git a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts index e7db03436..4c14ea2ec 100644 --- a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts +++ b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts @@ -1,12 +1,12 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { BaseService } from '@common/base/base.service'; import { Guid } from '@common/types/guid'; import { Observable, throwError } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; +import { RepositoryFileFormat } from '@app/core/model/file/file-format.model'; @Injectable() export class FileTransformerHttpService extends BaseService { @@ -20,20 +20,20 @@ export class FileTransformerHttpService extends BaseService { private get apiBase(): string { return `${this.configurationService.server}file-transformer`; } - getAvailableConfigurations(): Observable { + getAvailableConfigurations(): Observable { const url = `${this.apiBase}/available`; - return this.http.get(url).pipe(catchError((error: any) => throwError(error))); + return this.http.get(url).pipe(catchError((error: any) => throwError(error))); } - exportDmp(dmpId: Guid, format: string): Observable { + exportDmp(dmpId: Guid, repositoryId: string, format: string): Observable { //TODO: implement const url = `${this.apiBase}/export-dmp`; - return this.http.post(url, {id: dmpId, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); + return this.http.post(url, {id: dmpId, repositoryId: repositoryId, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); } - exportDescription(id: Guid, format: string): Observable { + exportDescription(id: Guid, repositoryId: string, format: string): Observable { //TODO: implement const url = `${this.apiBase}/export-description`; - return this.http.post(url, {id: id, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); + return this.http.post(url, {id: id, repositoryId: repositoryId, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); } } diff --git a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts index 604c4a516..e2a5df34e 100644 --- a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts +++ b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts @@ -1,5 +1,4 @@ import { Injectable } from '@angular/core'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { BaseService } from '@common/base/base.service'; import { catchError, takeUntil } from 'rxjs/operators'; import { FileTransformerHttpService } from './file-transformer.http.service'; @@ -8,6 +7,7 @@ import * as FileSaver from 'file-saver'; import { MatomoService } from '../matomo/matomo-service'; import { FileUtils } from '../utilities/file-utils.service'; import { AuthService } from '../auth/auth.service'; +import { RepositoryFileFormat } from '@app/core/model/file/file-format.model'; @Injectable() export class FileTransformerService extends BaseService { @@ -22,8 +22,8 @@ export class FileTransformerService extends BaseService { private _initialized: boolean = false; private _loading: boolean = false; - private _availableFormats: FileFormat[] = []; - get availableFormats(): FileFormat[] { + private _availableFormats: RepositoryFileFormat[] = []; + get availableFormats(): RepositoryFileFormat[] { if (!this.authentication.currentAccountIsAuthenticated()){ return; } @@ -46,9 +46,9 @@ export class FileTransformerService extends BaseService { }); } - exportDmp(id: Guid, format: string) { + exportDmp(id: Guid, repositoryId: string, format: string) { this._loading = true; - this.fileTransformerHttpService.exportDmp(id, format).pipe(takeUntil(this._destroyed), catchError((error) => { + this.fileTransformerHttpService.exportDmp(id, repositoryId, format).pipe(takeUntil(this._destroyed), catchError((error) => { this._loading = false; return null; })).subscribe(result => { @@ -62,9 +62,9 @@ export class FileTransformerService extends BaseService { }); } - exportDescription(id: Guid, format: string) { + exportDescription(id: Guid, repositoryId: string, format: string) { this._loading = true; - this.fileTransformerHttpService.exportDescription(id, format).pipe(takeUntil(this._destroyed), catchError((error) => { + this.fileTransformerHttpService.exportDescription(id, repositoryId, format).pipe(takeUntil(this._destroyed), catchError((error) => { this._loading = false; return null; })).subscribe(result => { diff --git a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts index fad3eda39..c39e08b43 100644 --- a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts @@ -8,7 +8,6 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser } from "@app/core/model/dmp/dmp"; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; import { DashboardService } from "@app/core/services/dashboard/dashboard.service"; @@ -175,7 +174,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { }; this.getItems(); - + this.formGroup.get('like').valueChanges .pipe(takeUntil(this._destroyed), debounceTime(500)) .subscribe(x => this.refresh()); @@ -186,14 +185,14 @@ export class DraftsComponent extends BaseComponent implements OnInit { loadMore() { this.pageSize = this.pageSize + this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } loadLess() { this.pageSize = this.pageSize - this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } private getItems(){ @@ -208,7 +207,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { if (item.dmp.descriptions) { if (item.dmp.status == DmpStatus.Finalized) { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status === DescriptionStatus.Finalized); - } else { + } else { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status != DescriptionStatus.Canceled); } } diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts index a669539d9..3fe14e807 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts @@ -11,7 +11,6 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; @@ -184,14 +183,14 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn loadMore() { this.pageSize = this.pageSize + this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } loadLess() { this.pageSize = this.pageSize - this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } private getItems(){ @@ -206,7 +205,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn if (item.dmp.descriptions) { if (item.dmp.status == DmpStatus.Finalized) { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status === DescriptionStatus.Finalized); - } else { + } else { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status != DescriptionStatus.Canceled); } } diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts index f48a3c8ac..b8dfac478 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts @@ -10,7 +10,6 @@ import { RecentActivityItem } from '@app/core/model/dashboard/recent-activity-it import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; @@ -156,7 +155,7 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O }; this.getItems(); - + this.formGroup.get('like').valueChanges .pipe(takeUntil(this._destroyed), debounceTime(500)) .subscribe(x => this.refresh()); @@ -167,13 +166,13 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O loadMore() { this.pageSize = this.pageSize + this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; + this.lookup.page = { size: this.pageSize, offset: 0 }; this.getItems(); } loadLess() { this.pageSize = this.pageSize - this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; + this.lookup.page = { size: this.pageSize, offset: 0 }; this.getItems(); } @@ -190,13 +189,13 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O if (item.dmp.descriptions) { if (item.dmp.status == DmpStatus.Finalized) { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status === DescriptionStatus.Finalized); - } else { + } else { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status != DescriptionStatus.Canceled); } } this.listingItems.push(item.dmp); } - + }) }); diff --git a/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts b/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts index 272d0ad8e..5b945b595 100644 --- a/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts @@ -14,7 +14,6 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description } from '@app/core/model/description/description'; import { Dmp, DmpDescriptionTemplate, DmpUser } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; import { DescriptionLookup } from '@app/core/query/description.lookup'; diff --git a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html index 31239fb69..052c5c46f 100644 --- a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html +++ b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html @@ -38,7 +38,7 @@ - diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html index 7be667a40..ae046ae48 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html @@ -117,7 +117,7 @@ {{ 'DESCRIPTION-OVERVIEW.ACTIONS.EXPORT' | translate }}

- diff --git a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html index 10d6bfa4f..c5a98ad6a 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html @@ -38,7 +38,7 @@ more_horiz - diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html index 2a7907b18..336fd9783 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html @@ -166,9 +166,9 @@

- diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts index 1e4285ee8..92726cfc0 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts @@ -175,7 +175,15 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { } }); if (this.isAuthenticated()) { - this.depositRepositoriesService.getAvailableRepos() + this.depositRepositoriesService.getAvailableRepos([ + nameof(x => x.depositType), + nameof(x => x.repositoryId), + nameof(x => x.repositoryAuthorizationUrl), + nameof(x => x.repositoryRecordUrl), + nameof(x => x.repositoryClientId), + nameof(x => x.hasLogo), + nameof(x => x.redirectUri) + ]) .pipe(takeUntil(this._destroyed)) .subscribe( repos => {