diff --git a/pom.xml b/pom.xml index 4e408bd..9158a86 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ gr.cite.opendmp repositorydepositbase - 1.0.3 + 1.0.4 diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java index 71c3760..acce6e9 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java @@ -7,6 +7,6 @@ public interface ConfigLoader { List getRelatedIdentifiers(); List getAcceptedPidTypes(); PidFieldNames getPidFieldNames(); - byte[] getLogo(); - ZenodoConfig getZenodoConfig(); + byte[] getLogo(String repositoryId); + List getZenodoConfig(); } diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java index 7e3a85a..2aa839d 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java @@ -1,5 +1,6 @@ package eu.eudat.depositinterface.zenodorepository.config; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,9 +23,9 @@ public class ConfigLoaderImpl implements ConfigLoader{ private List relatedIdentifiers = new ArrayList<>(); private List acceptedPidTypes = new ArrayList<>(); private PidFieldNames pidFieldNames = new PidFieldNames(); - private ZenodoConfig zenodoConfig; + private List zenodoConfig = new ArrayList<>(); - private Environment environment; + private final Environment environment; @Autowired public ConfigLoaderImpl(Environment environment){ @@ -35,7 +36,7 @@ public class ConfigLoaderImpl implements ConfigLoader{ public List getDOIFunders() { if (doiFunders == null || doiFunders.isEmpty()) { try { - List> tempdoiFunders = mapper.readValue(getStreamFromPath(environment.getProperty("configuration.doi_funder")), List.class); + List> tempdoiFunders = mapper.readValue(getStreamFromPath(environment.getProperty("zenodo_plugin.configuration.doi_funder")), List.class); doiFunders = tempdoiFunders.stream().map(map -> mapper.convertValue(map, DOIFunder.class) ).collect(Collectors.toList()); } catch (IOException e) { logger.error(e.getLocalizedMessage(), e); @@ -74,10 +75,10 @@ public class ConfigLoaderImpl implements ConfigLoader{ } @Override - public ZenodoConfig getZenodoConfig() { - if (zenodoConfig == null) { + public List getZenodoConfig() { + if (zenodoConfig == null || zenodoConfig.isEmpty()) { try { - zenodoConfig = mapper.readValue(getStreamFromPath(environment.getProperty("configuration.zenodo")), ZenodoConfig.class); + zenodoConfig = mapper.readValue(getStreamFromPath(environment.getProperty("zenodo_plugin.configuration.zenodo")), new TypeReference>() {}); } catch (IOException e) { logger.error(e.getLocalizedMessage(), e); return null; @@ -87,17 +88,26 @@ public class ConfigLoaderImpl implements ConfigLoader{ } @Override - public byte[] getLogo() { - String logo = "zenodo.jpg"; - if(logo != null && !logo.isEmpty()){ - InputStream logoStream = getStreamFromPath(logo); - try { - return logoStream.readAllBytes(); - } - catch (IOException e){ - logger.error(e.getMessage(), e); - return null; + public byte[] getLogo(String repositoryId) { + if (!zenodoConfig.isEmpty()) { + ZenodoConfig zenodoConfig = getZenodoConfig().stream().filter(x -> x.getRepositoryId().equals(repositoryId)).findFirst().orElse(null); + if (zenodoConfig != null) { + String logo = zenodoConfig.getLogo(); + InputStream logoStream; + if (logo != null && !logo.isEmpty()) { + logoStream = getStreamFromPath(logo); + } + else { + logoStream = getClass().getClassLoader().getResourceAsStream("zenodo.jpg"); + } + try { + return (logoStream != null) ? logoStream.readAllBytes() : null; + } + catch (IOException e) { + logger.error(e.getMessage(), e); + } } + return null; } return null; } diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java index 02aafdb..9cc9d31 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java @@ -54,6 +54,8 @@ public class ZenodoConfig { private String redirectUri; @JsonProperty("hasLogo") private boolean hasLogo; + @JsonProperty("logo") + private String logo; public int getDepositType() { return depositType; @@ -132,6 +134,13 @@ public class ZenodoConfig { this.hasLogo = hasLogo; } + public String getLogo() { + return logo; + } + public void setLogo(String logo) { + this.logo = logo; + } + public RepositoryDepositConfiguration toRepoConfig() { RepositoryDepositConfiguration config = new RepositoryDepositConfiguration(); config.setDepositType(this.depositType); diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java index 5a25ba6..e1119c6 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java @@ -24,14 +24,15 @@ import org.springframework.web.client.RestTemplate; import java.io.*; import java.nio.file.Files; import java.util.*; +import java.util.stream.Collectors; @Component public class ZenodoDeposit implements RepositoryDeposit { private static final Logger logger = LoggerFactory.getLogger(ZenodoDeposit.class); private static final ObjectMapper objectMapper = new ObjectMapper(); - private ConfigLoader configLoader; - private Environment environment; + private final ConfigLoader configLoader; + private final Environment environment; @Autowired public ZenodoDeposit(ConfigLoader configLoader, Environment environment){ @@ -40,148 +41,151 @@ public class ZenodoDeposit implements RepositoryDeposit { } @Override - public String deposit(DMPDepositModel dmpDepositModel, String zenodoToken) throws Exception { + public String deposit(String repositoryId, DMPDepositModel dmpDepositModel, String zenodoToken) throws Exception { - RepositoryDepositConfiguration conf = this.getConfiguration(); + RepositoryDepositConfiguration conf = this.getConfiguration().stream().filter(x -> x.getRepositoryId().equals(repositoryId)).findFirst().orElse(null); - if(zenodoToken == null){ - zenodoToken = conf.getAccessToken(); - } + if(conf != null) { - String zenodoUrl = conf.getRepositoryUrl(); - - // First step, post call to Zenodo, to create the entry. - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.APPLICATION_JSON); - eu.eudat.depositinterface.zenodorepository.models.ZenodoDeposit deposit = DMPToZenodoMapper.fromDMP(dmpDepositModel); - - HttpEntity request = new HttpEntity<>(deposit, headers); - Map createResponse; - LinkedHashMap links; - String previousDOI = dmpDepositModel.getPreviousDOI(); - String unpublishedUrl = null; - String publishUrl; - String finalDoi; - try { - - if (previousDOI == null) { - String createUrl = zenodoUrl + "deposit/depositions" + "?access_token=" + zenodoToken; - createResponse = restTemplate.postForEntity(createUrl, request, Map.class).getBody(); - links = (LinkedHashMap) createResponse.get("links"); + if (zenodoToken == null) { + zenodoToken = conf.getAccessToken(); } - else { - unpublishedUrl = this.getUnpublishedDOI(zenodoUrl, previousDOI, zenodoToken, dmpDepositModel.getVersion()); - if (unpublishedUrl == null) { - //It requires more than one step to create a new version - //First, get the deposit related to the concept DOI - String listUrl = zenodoUrl + "deposit/depositions" + "?q=conceptdoi:\"" + previousDOI + "\"&access_token=" + zenodoToken; - logger.debug("listUrl = " + listUrl); - ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); - createResponse = listResponses.getBody()[0]; - logger.debug("createResponse-previousDoi:"); - logger.debug(objectMapper.writeValueAsString(createResponse)); + + String zenodoUrl = conf.getRepositoryUrl(); + + // First step, post call to Zenodo, to create the entry. + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setContentType(MediaType.APPLICATION_JSON); + eu.eudat.depositinterface.zenodorepository.models.ZenodoDeposit deposit = DMPToZenodoMapper.fromDMP(dmpDepositModel); + + HttpEntity request = new HttpEntity<>(deposit, headers); + Map createResponse; + LinkedHashMap links; + String previousDOI = dmpDepositModel.getPreviousDOI(); + String unpublishedUrl = null; + String publishUrl; + String finalDoi; + try { + + if (previousDOI == null) { + String createUrl = zenodoUrl + "deposit/depositions" + "?access_token=" + zenodoToken; + createResponse = restTemplate.postForEntity(createUrl, request, Map.class).getBody(); links = (LinkedHashMap) createResponse.get("links"); - //Second, make the new version (not in the links?) - String newVersionUrl = links.get("self") + "/actions/newversion" + "?access_token=" + zenodoToken; - logger.debug("new version url: " + newVersionUrl); - createResponse = restTemplate.postForObject(newVersionUrl, null, Map.class); - logger.debug("createResponse-newVersion:"); - logger.debug(objectMapper.writeValueAsString(createResponse)); - links = (LinkedHashMap) createResponse.get("links"); - //Third, get the new deposit - String latestDraftUrl = links.get("latest_draft") + "?access_token=" + zenodoToken; - createResponse = restTemplate.getForObject(latestDraftUrl, Map.class); - logger.debug("createResponse-latestDraft:"); - logger.debug(objectMapper.writeValueAsString(createResponse)); - links = (LinkedHashMap) createResponse.get("links"); - //At this point it might fail to perform the next requests so enclose them with try catch - try { - //Forth, update the new deposit's metadata - String updateUrl = links.get("self") + "?access_token=" + zenodoToken; - restTemplate.put(updateUrl, request); - //And finally remove pre-existing files from it - String fileListUrl = links.get("self") + "/files" + "?access_token=" + zenodoToken; - ResponseEntity fileListResponse = restTemplate.getForEntity(fileListUrl, Map[].class); - for (Map file : fileListResponse.getBody()) { - String fileDeleteUrl = links.get("self") + "/files/" + file.get("id") + "?access_token=" + zenodoToken; - restTemplate.delete(fileDeleteUrl); + } else { + unpublishedUrl = this.getUnpublishedDOI(zenodoUrl, previousDOI, zenodoToken, dmpDepositModel.getVersion()); + if (unpublishedUrl == null) { + //It requires more than one step to create a new version + //First, get the deposit related to the concept DOI + String listUrl = zenodoUrl + "deposit/depositions" + "?q=conceptdoi:\"" + previousDOI + "\"&access_token=" + zenodoToken; + logger.debug("listUrl = " + listUrl); + ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); + createResponse = listResponses.getBody()[0]; + logger.debug("createResponse-previousDoi:"); + logger.debug(objectMapper.writeValueAsString(createResponse)); + links = (LinkedHashMap) createResponse.get("links"); + //Second, make the new version (not in the links?) + String newVersionUrl = links.get("self") + "/actions/newversion" + "?access_token=" + zenodoToken; + logger.debug("new version url: " + newVersionUrl); + createResponse = restTemplate.postForObject(newVersionUrl, null, Map.class); + logger.debug("createResponse-newVersion:"); + logger.debug(objectMapper.writeValueAsString(createResponse)); + links = (LinkedHashMap) createResponse.get("links"); + //Third, get the new deposit + String latestDraftUrl = links.get("latest_draft") + "?access_token=" + zenodoToken; + createResponse = restTemplate.getForObject(latestDraftUrl, Map.class); + logger.debug("createResponse-latestDraft:"); + logger.debug(objectMapper.writeValueAsString(createResponse)); + links = (LinkedHashMap) createResponse.get("links"); + //At this point it might fail to perform the next requests so enclose them with try catch + try { + //Forth, update the new deposit's metadata + String updateUrl = links.get("self") + "?access_token=" + zenodoToken; + restTemplate.put(updateUrl, request); + //And finally remove pre-existing files from it + String fileListUrl = links.get("self") + "/files" + "?access_token=" + zenodoToken; + ResponseEntity fileListResponse = restTemplate.getForEntity(fileListUrl, Map[].class); + for (Map file : fileListResponse.getBody()) { + String fileDeleteUrl = links.get("self") + "/files/" + file.get("id") + "?access_token=" + zenodoToken; + restTemplate.delete(fileDeleteUrl); + } + } catch (Exception e) { + //In case the last two steps fail delete the latest Deposit it in order to create a new one (only one at a time is allowed) + restTemplate.delete(latestDraftUrl); + throw e; } - } catch (Exception e) { - //In case the last two steps fail delete the latest Deposit it in order to create a new one (only one at a time is allowed) - restTemplate.delete(latestDraftUrl); - throw e; + } else { + String listUrl = zenodoUrl + "deposit/depositions" + "?q=conceptdoi:\"" + previousDOI + "\"&access_token=" + zenodoToken; + ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); + createResponse = listResponses.getBody()[0]; + links = (LinkedHashMap) createResponse.get("links"); } } - else { - String listUrl = zenodoUrl + "deposit/depositions" + "?q=conceptdoi:\"" + previousDOI + "\"&access_token=" + zenodoToken; - ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); - createResponse = listResponses.getBody()[0]; - links = (LinkedHashMap) createResponse.get("links"); - } - } - if (unpublishedUrl == null) { - // Second step, add the file to the entry. - FileEnvelope pdfEnvelope = dmpDepositModel.getPdfFile(); - FileSystemResource fileSystemResource = new FileSystemResource(pdfEnvelope.getFile()); - HttpEntity addFileMapRequest = new HttpEntity<>(fileSystemResource, null); + if (unpublishedUrl == null) { + // Second step, add the file to the entry. + FileEnvelope pdfEnvelope = dmpDepositModel.getPdfFile(); + FileSystemResource fileSystemResource = new FileSystemResource(pdfEnvelope.getFile()); + HttpEntity addFileMapRequest = new HttpEntity<>(fileSystemResource, null); - String addFileUrl = links.get("bucket") + "/" + pdfEnvelope.getFilename() + "?access_token=" + zenodoToken; - restTemplate.put(addFileUrl, addFileMapRequest); - - FileEnvelope rdaJsonEnvelope = dmpDepositModel.getRdaJsonFile(); - HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.setContentLength(rdaJsonEnvelope.getFile().length()); - responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); - responseHeaders.set("Content-Disposition", "attachment;filename=" + rdaJsonEnvelope.getFilename()); - responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); - responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); - - byte[] content = Files.readAllBytes(rdaJsonEnvelope.getFile().toPath()); - - ResponseEntity jsonFile = new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); - - UUID jsonFileUUID = UUID.randomUUID(); - File tempJsonFile = new File(this.environment.getProperty("storage.temp") + jsonFileUUID + ".json"); - try (FileOutputStream jsonFos = new FileOutputStream(tempJsonFile)) { - jsonFos.write(jsonFile.getBody()); - jsonFos.flush(); - } - fileSystemResource = new FileSystemResource(tempJsonFile); - HttpHeaders jsonHeaders = new HttpHeaders(); - jsonHeaders.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); - addFileMapRequest = new HttpEntity<>(fileSystemResource, jsonHeaders); - String jsonFileName = jsonFile.getHeaders().get("Content-Disposition").get(0).substring(jsonFile.getHeaders().get("Content-Disposition").get(0).lastIndexOf('=') + 1); - addFileUrl = links.get("bucket") + "/" + jsonFileName + "?access_token=" + zenodoToken; - restTemplate.put(addFileUrl, addFileMapRequest); - Files.deleteIfExists(tempJsonFile.toPath()); - - if(dmpDepositModel.getSupportingFilesZip() != null) { - File supportinFilesZip = dmpDepositModel.getSupportingFilesZip(); - String supportinFilesZipName = dmpDepositModel.getSupportingFilesZip().getName(); - fileSystemResource = new FileSystemResource(supportinFilesZip); - addFileMapRequest = new HttpEntity<>(fileSystemResource, null); - - addFileUrl = links.get("bucket") + "/" + supportinFilesZipName + "?access_token=" + zenodoToken; + String addFileUrl = links.get("bucket") + "/" + pdfEnvelope.getFilename() + "?access_token=" + zenodoToken; restTemplate.put(addFileUrl, addFileMapRequest); + + FileEnvelope rdaJsonEnvelope = dmpDepositModel.getRdaJsonFile(); + HttpHeaders responseHeaders = new HttpHeaders(); + responseHeaders.setContentLength(rdaJsonEnvelope.getFile().length()); + responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); + responseHeaders.set("Content-Disposition", "attachment;filename=" + rdaJsonEnvelope.getFilename()); + responseHeaders.set("Access-Control-Expose-Headers", "Content-Disposition"); + responseHeaders.get("Access-Control-Expose-Headers").add("Content-Type"); + + byte[] content = Files.readAllBytes(rdaJsonEnvelope.getFile().toPath()); + + ResponseEntity jsonFile = new ResponseEntity<>(content, responseHeaders, HttpStatus.OK); + + UUID jsonFileUUID = UUID.randomUUID(); + File tempJsonFile = new File(this.environment.getProperty("zenodo_plugin.storage.temp") + jsonFileUUID + ".json"); + try (FileOutputStream jsonFos = new FileOutputStream(tempJsonFile)) { + jsonFos.write(jsonFile.getBody()); + jsonFos.flush(); + } + fileSystemResource = new FileSystemResource(tempJsonFile); + HttpHeaders jsonHeaders = new HttpHeaders(); + jsonHeaders.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE); + addFileMapRequest = new HttpEntity<>(fileSystemResource, jsonHeaders); + String jsonFileName = jsonFile.getHeaders().get("Content-Disposition").get(0).substring(jsonFile.getHeaders().get("Content-Disposition").get(0).lastIndexOf('=') + 1); + addFileUrl = links.get("bucket") + "/" + jsonFileName + "?access_token=" + zenodoToken; + restTemplate.put(addFileUrl, addFileMapRequest); + Files.deleteIfExists(tempJsonFile.toPath()); + + if (dmpDepositModel.getSupportingFilesZip() != null) { + File supportinFilesZip = dmpDepositModel.getSupportingFilesZip(); + String supportinFilesZipName = dmpDepositModel.getSupportingFilesZip().getName(); + fileSystemResource = new FileSystemResource(supportinFilesZip); + addFileMapRequest = new HttpEntity<>(fileSystemResource, null); + + addFileUrl = links.get("bucket") + "/" + supportinFilesZipName + "?access_token=" + zenodoToken; + restTemplate.put(addFileUrl, addFileMapRequest); + } + + // Third post call to Zenodo to publish the entry and return the DOI. + publishUrl = links.get("publish") + "?access_token=" + zenodoToken; + } else { + publishUrl = unpublishedUrl + "?access_token=" + zenodoToken; } - // Third post call to Zenodo to publish the entry and return the DOI. - publishUrl = links.get("publish") + "?access_token=" + zenodoToken; - } - else { - publishUrl = unpublishedUrl + "?access_token=" + zenodoToken; + return this.publish(publishUrl); + + } catch (HttpClientErrorException | HttpServerErrorException ex) { + Map parsedException = objectMapper.readValue(ex.getResponseBodyAsString(), HashMap.class); + throw new IOException(parsedException.get("message"), ex); } - return this.publish(publishUrl); - - } catch (HttpClientErrorException | HttpServerErrorException ex) { - Map parsedException = objectMapper.readValue(ex.getResponseBodyAsString(), HashMap.class); - throw new IOException(parsedException.get("message"), ex); } + return null; + } private String publish(String publishUrl){ @@ -192,54 +196,62 @@ public class ZenodoDeposit implements RepositoryDeposit { @Override - public RepositoryDepositConfiguration getConfiguration() { - ZenodoConfig zenodoConfig = this.configLoader.getZenodoConfig(); - return (zenodoConfig != null) ? zenodoConfig.toRepoConfig() : null; + public List getConfiguration() { + List zenodoConfigs = this.configLoader.getZenodoConfig(); + return (zenodoConfigs != null) ? zenodoConfigs.stream().map(ZenodoConfig::toRepoConfig).collect(Collectors.toList()) : null; } @Override - public String authenticate(String code){ + public String authenticate(String repositoryId, String code){ - RepositoryDepositConfiguration conf = this.getConfiguration(); + RepositoryDepositConfiguration conf = this.getConfiguration().stream().filter(x -> x.getRepositoryId().equals(repositoryId)).findFirst().orElse(null); - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); + if(conf != null) { - MultiValueMap map = new LinkedMultiValueMap<>(); - map.add("client_id", conf.getRepositoryClientId()); - map.add("client_secret", conf.getRepositoryClientSecret()); - map.add("grant_type", "authorization_code"); - map.add("code", code); - map.add("redirect_uri", conf.getRedirectUri()); - HttpEntity> request = new HttpEntity<>(map, headers); + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); - try { - Map values = restTemplate.postForObject(conf.getRepositoryAccessTokenUrl(), request, Map.class); - //ZenodoResponseToken zenodoResponseToken = new ZenodoResponseToken(); - Map user = (Map) values.get("user"); -// zenodoResponseToken.setUserId((String) user.get("id")); -// zenodoResponseToken.setEmail((String) user.get("email")); -// zenodoResponseToken.setExpiresIn((Integer) values.get("expires_in")); -// zenodoResponseToken.setAccessToken((String) values.get("access_token")); -// zenodoResponseToken.setRefreshToken((String) values.get("refresh_token")); + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("client_id", conf.getRepositoryClientId()); + map.add("client_secret", conf.getRepositoryClientSecret()); + map.add("grant_type", "authorization_code"); + map.add("code", code); + map.add("redirect_uri", conf.getRedirectUri()); + HttpEntity> request = new HttpEntity<>(map, headers); + + try { + Map values = restTemplate.postForObject(conf.getRepositoryAccessTokenUrl(), request, Map.class); + //ZenodoResponseToken zenodoResponseToken = new ZenodoResponseToken(); + Map user = (Map) values.get("user"); + // zenodoResponseToken.setUserId((String) user.get("id")); + // zenodoResponseToken.setEmail((String) user.get("email")); + // zenodoResponseToken.setExpiresIn((Integer) values.get("expires_in")); + // zenodoResponseToken.setAccessToken((String) values.get("access_token")); + // zenodoResponseToken.setRefreshToken((String) values.get("refresh_token")); + + //return zenodoResponseToken; + return (String) values.get("access_token"); + } catch (HttpClientErrorException ex) { + logger.error(ex.getResponseBodyAsString(), ex); + } + + return null; - //return zenodoResponseToken; - return (String) values.get("access_token"); - } catch (HttpClientErrorException ex) { - logger.error(ex.getResponseBodyAsString(), ex); } return null; } @Override - public String getLogo() { - RepositoryDepositConfiguration conf = this.getConfiguration(); - if(conf.isHasLogo()){ - byte[] logo = this.configLoader.getLogo(); - return (logo != null && logo.length != 0) ? Base64.getEncoder().encodeToString(logo) : null; + public String getLogo(String repositoryId) { + RepositoryDepositConfiguration conf = this.getConfiguration().stream().filter(x -> x.getRepositoryId().equals(repositoryId)).findFirst().orElse(null); + if(conf != null) { + if(conf.isHasLogo()){ + byte[] logo = this.configLoader.getLogo(repositoryId); + return (logo != null && logo.length != 0) ? Base64.getEncoder().encodeToString(logo) : null; + } } return null; } diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java index a6a2133..a8e68ba 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java @@ -171,7 +171,7 @@ public class DMPToZenodoMapper { deposit.getMetadata().setPublicationType("datamanagementplan"); deposit.getMetadata().setDescription((dmp.getDescription() != null && !dmp.getDescription().isEmpty() ? dmp.getDescription() : "

")); deposit.getMetadata().setVersion(String.valueOf(dmp.getVersion())); - String zenodoCommunity = environment.getProperty("zenodo.community"); + String zenodoCommunity = environment.getProperty("zenodo_plugin.zenodo.community"); if(zenodoCommunity != null && !zenodoCommunity.isEmpty()) { ZenodoComunity community = new ZenodoComunity(); community.setIdentifier(zenodoCommunity); @@ -200,11 +200,11 @@ public class DMPToZenodoMapper { } if (dmp.isPublic()) { ZenodoRelator relator = new ZenodoRelator(); - relator.setIdentifier(environment.getProperty("zenodo.domain") + "/external/zenodo/" + dmp.getId().toString()); + relator.setIdentifier(environment.getProperty("zenodo_plugin.zenodo.domain") + "/external/zenodo/" + dmp.getId().toString()); relator.setRelation("isIdenticalTo"); deposit.getMetadata().getRelatedIdentifiers().add(relator); } - String zenodoAffiliation = environment.getProperty("zenodo.affiliation"); + String zenodoAffiliation = environment.getProperty("zenodo_plugin.zenodo.affiliation"); List contributors1 = dmp.getUsers().stream().map(userDMP -> { ZenodoContributor contributor = new ZenodoContributor(); contributor.setName(userDMP.getUser().getName()); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5e67098..468317f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,6 @@ -configuration.doi_funder=DOI_Funder.json -configuration.zenodo.logo=${CONFIGURATION_LOGO_ZENODO} -storage.temp=${STORAGE_TMP_ZENODO} -configuration.zenodo=${CONFIGURATION_ZENODO} -zenodo.community=argos -zenodo.affiliation=ARGOS -zenodo.domain=https://argos.openaire.eu/ \ No newline at end of file +zenodo_plugin.configuration.doi_funder=${ZENODO_DOI_DUNDER} +zenodo_plugin.storage.temp=${STORAGE_TMP_ZENODO} +zenodo_plugin.configuration.zenodo=${CONFIGURATION_ZENODO} +zenodo_plugin.zenodo.community=${ZENODO_COMMUNITY} +zenodo_plugin.zenodo.affiliation=${ZENODO_AFFILIATION} +zenodo_plugin.zenodo.domain=${ZENODO_OPENDMP_DOMAIN} \ No newline at end of file