diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DepositController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DepositController.java index fdc266bfc..c0cf489d1 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DepositController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DepositController.java @@ -64,4 +64,21 @@ public class DepositController extends BaseController { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Failed to create DOI for the Data Management Plan: " + e.getMessage())); } } + + @RequestMapping(method = RequestMethod.GET, value = {"/logo/{repositoryId}"}) + public @ResponseBody + ResponseEntity> getLogo(@PathVariable("repositoryId") String repositoryId, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) { + try { + String encodedLogo = this.depositManager.getRepositoryLogo(repositoryId); + if(encodedLogo != null){ + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully loaded " + repositoryId + "'s logo.").payload(encodedLogo)); + } + else{ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(repositoryId + " has no logo").payload(null)); + } + } catch (Exception e) { + logger.error(e.getMessage(), e); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Failed to load " + repositoryId + "'s logo: " + e.getMessage())); + } + } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DepositManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DepositManager.java index 982b7d399..df71d4f65 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DepositManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DepositManager.java @@ -1,13 +1,7 @@ package eu.eudat.logic.managers; -import eu.eudat.data.entities.DMP; -import eu.eudat.depositinterface.models.DMPDepositModel; import eu.eudat.depositinterface.repository.RepositoryDeposit; import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; -import eu.eudat.exceptions.security.NonValidTokenException; -import eu.eudat.logic.security.repositorydeposit.mapper.DMPToDepositMapper; -import eu.eudat.logic.utilities.documents.helpers.FileEnvelope; -import eu.eudat.logic.utilities.documents.pdf.PDFUtils; import eu.eudat.models.data.doi.DepositRequest; import eu.eudat.models.data.doi.Doi; import eu.eudat.models.data.doi.RepositoryConfig; @@ -15,11 +9,8 @@ import eu.eudat.models.data.security.Principal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; -import java.io.File; -import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -57,4 +48,11 @@ public class DepositManager { public Doi deposit(DepositRequest depositRequest, Principal principal) throws Exception { return this.dataManagementPlanManager.createDoi(depositRequest, principal); } + + public String getRepositoryLogo(String repositoryId){ + Optional repo = repositories.stream().filter(x -> x.getConfiguration().getRepositoryId().equals(repositoryId)).findFirst(); + return repo.map(repositoryDeposit -> + (repositoryDeposit.getConfiguration().isHasLogo()) ? repositoryDeposit.getLogo() : null + ).orElse(null); + } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/RepositoryConfig.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/RepositoryConfig.java index 67eaab098..1c45346a0 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/RepositoryConfig.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/doi/RepositoryConfig.java @@ -10,6 +10,7 @@ public class RepositoryConfig { private String repositoryRecordUrl; private String repositoryClientId; private String redirectUri; + private boolean hasLogo; public int getDepositType() { return depositType; @@ -53,6 +54,13 @@ public class RepositoryConfig { this.redirectUri = redirectUri; } + public boolean isHasLogo() { + return hasLogo; + } + public void setHasLogo(boolean hasLogo) { + this.hasLogo = hasLogo; + } + public RepositoryConfig toModel(RepositoryDepositConfiguration r){ this.setDepositType(r.getDepositType()); this.setRepositoryId(r.getRepositoryId()); @@ -60,6 +68,7 @@ public class RepositoryConfig { this.setRepositoryRecordUrl(r.getRepositoryRecordUrl()); this.setRepositoryClientId(r.getRepositoryClientId()); this.setRedirectUri(r.getRedirectUri()); + this.setHasLogo(r.isHasLogo()); return this; } } diff --git a/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts b/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts index bfcc105c6..fe92ddd5b 100644 --- a/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts +++ b/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts @@ -7,4 +7,5 @@ export class DepositConfigurationModel { repositoryRecordUrl: string; repositoryClientId: string; redirectUri: string; + hasLogo: boolean; } diff --git a/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts b/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts index 235f766a8..c40347075 100644 --- a/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts +++ b/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts @@ -35,4 +35,9 @@ export class DepositRepositoriesService { depositRequest.accessToken = accessToken; return this.http.post(this.actionUrl + 'createDoi', depositRequest, { headers: this.headers }); } + + getLogo(repositoryId: string): Observable { + return this.http.get(this.actionUrl + 'logo/' + repositoryId, { headers: this.headers }); + } + }