diff --git a/dmp-backend/dataverseRepository/pom.xml b/dmp-backend/dataverseRepository/pom.xml deleted file mode 100644 index 329ee14f7..000000000 --- a/dmp-backend/dataverseRepository/pom.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.5.2 - - - eu.eudat.depositinterface - dataverseRepository - 0.0.1-SNAPSHOT - dataverseRepository - - - 11 - - - - - jitpack.io - https://jitpack.io - - - - - - org.springframework.boot - spring-boot-starter-web - - - - eu.eudat - depositinterface - 1.0-SNAPSHOT - - - - com.github.IQSS - dataverse-client-java - master-dv14-12-compatible-ge2dc343-7 - - - - - - - maven-assembly-plugin - - - package - - single - - - - - - - eu.eudat.EuDatApplication - - - - jar-with-dependencies - - - - - - - diff --git a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/ConfigLoader.java b/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/ConfigLoader.java deleted file mode 100644 index 5c8b82008..000000000 --- a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/ConfigLoader.java +++ /dev/null @@ -1,5 +0,0 @@ -package eu.eudat.depositinterface.dataverserepository.config; - -public interface ConfigLoader { - DataverseConfig getDataverseConfig(); -} diff --git a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/ConfigLoaderImpl.java b/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/ConfigLoaderImpl.java deleted file mode 100644 index 109bd7d1d..000000000 --- a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/ConfigLoaderImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package eu.eudat.depositinterface.dataverserepository.config; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Service; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; - -@Service("dataverseConfigLoader") -public class ConfigLoaderImpl implements ConfigLoader{ - private static final Logger logger = LoggerFactory.getLogger(ConfigLoaderImpl.class); - private static final ObjectMapper mapper = new ObjectMapper(); - - private DataverseConfig dataverseConfig; - - @Autowired - private Environment environment; - - @Override - public DataverseConfig getDataverseConfig() { - if(dataverseConfig == null){ - try{ - dataverseConfig = mapper.readValue(getStreamFromPath(environment.getProperty("configuration.dataverse")), DataverseConfig.class); - } catch (IOException e) { - logger.error(e.getLocalizedMessage(), e); - } - } - return dataverseConfig; - } - - private InputStream getStreamFromPath(String filePath) { - try { - return new FileInputStream(filePath); - } catch (FileNotFoundException e) { - logger.info("loading from classpath"); - return getClass().getClassLoader().getResourceAsStream(filePath); - } - } -} diff --git a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/DataverseConfig.java b/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/DataverseConfig.java deleted file mode 100644 index b664dd9c9..000000000 --- a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/config/DataverseConfig.java +++ /dev/null @@ -1,106 +0,0 @@ -package eu.eudat.depositinterface.dataverserepository.config; - -import com.fasterxml.jackson.annotation.JsonProperty; -import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; - -public class DataverseConfig { - private enum DepositType { - SystemDeposit(0), UserDeposit(1), BothWaysDeposit(2); - - private final int value; - - DepositType(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - public static DepositType fromInteger(int value) { - switch (value) { - case 0: - return SystemDeposit; - case 1: - return UserDeposit; - case 2: - return BothWaysDeposit; - default: - throw new RuntimeException("Unsupported Deposit Type"); - } - } - } - - @JsonProperty("depositType") - private int depositType; - @JsonProperty("repositoryId") - private String repositoryId; - @JsonProperty("apiToken") - private String apiToken; - @JsonProperty("repositoryUrl") - private String repositoryUrl; - @JsonProperty("repositoryRecordUrl") - private String repositoryRecordUrl; - @JsonProperty("server") - private String server; - @JsonProperty("parentDataverseAlias") - private String parentDataverseAlias; - - public int getDepositType() { - return depositType; - } - public void setDepositType(int depositType) { - this.depositType = depositType; - } - - public String getRepositoryId() { - return repositoryId; - } - public void setRepositoryId(String repositoryId) { - this.repositoryId = repositoryId; - } - - public String getApiToken() { - return apiToken; - } - public void setApiToken(String apiToken) { - this.apiToken = apiToken; - } - - public String getRepositoryUrl() { - return repositoryUrl; - } - public void setRepositoryUrl(String repositoryUrl) { - this.repositoryUrl = repositoryUrl; - } - - public String getRepositoryRecordUrl() { - return repositoryRecordUrl; - } - public void setRepositoryRecordUrl(String repositoryRecordUrl) { - this.repositoryRecordUrl = repositoryRecordUrl; - } - - public String getServer() { - return server; - } - public void setServer(String server) { - this.server = server; - } - - public String getParentDataverseAlias() { - return parentDataverseAlias; - } - public void setParentDataverseAlias(String parentDataverseAlias) { - this.parentDataverseAlias = parentDataverseAlias; - } - - public RepositoryDepositConfiguration toRepoConfig() { - RepositoryDepositConfiguration config = new RepositoryDepositConfiguration(); - config.setDepositType(this.depositType); - config.setRepositoryId(this.repositoryId); - config.setRepositoryUrl(this.repositoryUrl); - config.setRepositoryRecordUrl(this.repositoryRecordUrl); - return config; - } -} diff --git a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/interfaces/DataverseDeposit.java b/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/interfaces/DataverseDeposit.java deleted file mode 100644 index 588a8807e..000000000 --- a/dmp-backend/dataverseRepository/src/main/java/eu/eudat/depositinterface/dataverserepository/interfaces/DataverseDeposit.java +++ /dev/null @@ -1,200 +0,0 @@ -package eu.eudat.depositinterface.dataverserepository.interfaces; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.researchspace.dataverse.api.v1.DataverseAPI; -import com.researchspace.dataverse.api.v1.DataverseConfig; -import com.researchspace.dataverse.entities.*; -import com.researchspace.dataverse.entities.facade.DatasetAuthor; -import com.researchspace.dataverse.entities.facade.DatasetContact; -import com.researchspace.dataverse.entities.facade.DatasetDescription; -import com.researchspace.dataverse.entities.facade.DatasetFacade; -import com.researchspace.dataverse.http.DataverseAPIImpl; -import eu.eudat.depositinterface.dataverserepository.config.ConfigLoader; -import eu.eudat.depositinterface.models.DMPDepositModel; -import eu.eudat.depositinterface.repository.RepositoryDeposit; -import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; -import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; -import org.springframework.http.*; -import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.*; -import java.util.stream.Collectors; - -import static com.researchspace.dataverse.entities.Version.MAJOR; -import static com.researchspace.dataverse.entities.Version.MINOR; - -@Component -public class DataverseDeposit implements RepositoryDeposit { - private static final Logger logger = LoggerFactory.getLogger(DataverseDeposit.class); - private static final ObjectMapper objectMapper = new ObjectMapper(); - - private DataverseAPI api; - private boolean isApiSet; - - private ConfigLoader configLoader; - private Environment environment; - - @Autowired - public DataverseDeposit(ConfigLoader configLoader, Environment environment){ - this.configLoader = configLoader; - this.environment = environment; - this.isApiSet = false; - } - - private void setDataverseApi() throws MalformedURLException { - if(!this.isApiSet) { - this.api = new DataverseAPIImpl(); - eu.eudat.depositinterface.dataverserepository.config.DataverseConfig jsonConfig = this.configLoader.getDataverseConfig(); - DataverseConfig config = new DataverseConfig(new URL(jsonConfig.getServer()), jsonConfig.getApiToken(), jsonConfig.getParentDataverseAlias()); - api.configure(config); - this.isApiSet = true; - } - } - - @Override - public String deposit(DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception { - - if(!this.isApiSet) - this.setDataverseApi(); - - String doi; - DatasetFacade dataset = DatasetFacade.builder() - .title(dmpDepositModel.getLabel()) - .authors(dmpDepositModel.getUsers().stream().map(x -> DatasetAuthor.builder().authorName(x.getUser().getName()).build()).collect(Collectors.toList())) - .contacts(dmpDepositModel.getUsers().stream().map(x -> DatasetContact.builder().datasetContactEmail(x.getUser().getEmail()).build()).collect(Collectors.toList())) - .subject("Other") - .description(DatasetDescription.builder().description(dmpDepositModel.getDescription()).build()) - .languages(new ArrayList<>()) - .depositor("") - .build(); - - if(dmpDepositModel.getPreviousDOI() == null || dmpDepositModel.getPreviousDOI().isEmpty()){ - Identifier id = this.api.getDataverseOperations().createDataset(dataset, this.configLoader.getDataverseConfig().getParentDataverseAlias()); - - doi = this.api.getDatasetOperations().getDataset(id).getDoiId().orElse(null); - - this.uploadFiles(dmpDepositModel, doi); - - this.api.getDatasetOperations().publishDataset(id, MAJOR); - } - else{ - Map datasetJson = this.getDatasetIdentifier(dmpDepositModel.getPreviousDOI()); - Identifier id = new Identifier(); - id.setId(((Integer) datasetJson.get("id")).longValue()); - JsonNode jsonNode = this.objectMapper.readTree(new JSONObject(datasetJson).toString()); - List files = jsonNode.findValues("dataFile"); - for(JsonNode file: files){ - int fileId = file.get("id").asInt(); - this.deleteFile(fileId); - } - - this.uploadFiles(dmpDepositModel, dmpDepositModel.getPreviousDOI()); - - this.api.getDatasetOperations().updateDataset(dataset, id); - DataverseResponse publishedDataset = this.api.getDatasetOperations().publishDataset(id, MAJOR); - doi = publishedDataset.getData().getAuthority() + "/" + publishedDataset.getData().getIdentifier(); - } - - - return doi; - - } - - private void deleteFile(int fileId){ - HttpHeaders headers = this.createBasicAuthHeaders(this.configLoader.getDataverseConfig().getApiToken(), ""); - String serverUrl = this.configLoader.getDataverseConfig().getServer() + "/dvn/api/data-deposit/v1.1/swordv2/edit-media/file/" + fileId; - RestTemplate restTemplate = new RestTemplate(); - restTemplate.exchange(serverUrl, HttpMethod.DELETE, new HttpEntity<>(headers), Object.class); - } - - private HttpHeaders createBasicAuthHeaders(String username, String password) { - return new HttpHeaders() {{ - String auth = username + ":" + password; - byte[] encodedAuth = Base64.getEncoder().encode( - auth.getBytes(StandardCharsets.UTF_8)); - String authHeader = "Basic " + new String(encodedAuth); - set("Authorization", authHeader); - }}; - } - - private void uploadFiles(DMPDepositModel dmpDepositModel, String doi) throws IOException { - this.uploadFile(dmpDepositModel.getPdfFileName(), dmpDepositModel.getPdfFile(), doi); - - String contentDisposition = dmpDepositModel.getRdaJson().getHeaders().get("Content-Disposition").get(0); - String jsonFileName = contentDisposition.substring(contentDisposition.lastIndexOf('=') + 1); - File rdaJson = new File(this.environment.getProperty("storage.temp") + jsonFileName); - OutputStream output = new FileOutputStream(rdaJson); - try { - output.write(Objects.requireNonNull(dmpDepositModel.getRdaJson().getBody())); - output.flush(); - output.close(); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - this.uploadFile(jsonFileName, rdaJson, doi); - Files.deleteIfExists(rdaJson.toPath()); - - if(dmpDepositModel.getSupportingFilesZip() != null) { - this.uploadFile(dmpDepositModel.getSupportingFilesZip().getName(), dmpDepositModel.getSupportingFilesZip(), doi); - } - } - - private Map getDatasetIdentifier(String previousDOI) { - HttpHeaders headers = new HttpHeaders(); - headers.set("X-Dataverse-key", this.configLoader.getDataverseConfig().getApiToken()); - String serverUrl = this.configLoader.getDataverseConfig().getServer() + "/api/datasets/:persistentId?persistentId=doi:" + previousDOI; - RestTemplate restTemplate = new RestTemplate(); - return (Map) restTemplate.exchange(serverUrl, HttpMethod.GET, new HttpEntity<>(headers), Map.class).getBody().get("data"); - } - - private void uploadFile(String filename, File file, String doi) throws IOException { - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - headers.set("X-Dataverse-key", this.configLoader.getDataverseConfig().getApiToken()); - MultiValueMap fileMap = new LinkedMultiValueMap<>(); - ContentDisposition contentDisposition = ContentDisposition - .builder("form-data") - .name("file") - .filename(filename) - .build(); - fileMap.add(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString()); - HttpEntity fileEntity = new HttpEntity<>(Files.readAllBytes(file.toPath()), fileMap); - MultiValueMap body = new LinkedMultiValueMap<>(); - body.add("file", fileEntity); - body.add("jsonData", "{\"restrict\":\"false\", \"tabIngest\":\"false\"}"); - HttpEntity> requestEntity - = new HttpEntity<>(body, headers); - - String serverUrl = this.configLoader.getDataverseConfig().getServer() + "/api/datasets/:persistentId/add?persistentId=doi:" + doi; - - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity resp = restTemplate.postForEntity(serverUrl, requestEntity, Object.class); - } - - @Override - public RepositoryDepositConfiguration getConfiguration() { - eu.eudat.depositinterface.dataverserepository.config.DataverseConfig dataverseConfig = this.configLoader.getDataverseConfig(); - return dataverseConfig.toRepoConfig(); - } - - @Override - public String authenticate(String code) { - return null; - } -} diff --git a/dmp-backend/dataverseRepository/src/main/resources/application.properties b/dmp-backend/dataverseRepository/src/main/resources/application.properties deleted file mode 100644 index ebc8cede9..000000000 --- a/dmp-backend/dataverseRepository/src/main/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -storage.temp=${DATAVERSE_TMP} -configuration.dataverse=${DATAVERSE_CONF} \ No newline at end of file diff --git a/dmp-backend/dataverseRepository/src/main/resources/dataverse.json b/dmp-backend/dataverseRepository/src/main/resources/dataverse.json deleted file mode 100644 index 9bdb6e91d..000000000 --- a/dmp-backend/dataverseRepository/src/main/resources/dataverse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "depositType": 0, - "repositoryId": "Dataverse", - "apiToken": "", - "repositoryUrl": "https://demo.dataverse.org/api/", - "repositoryRecordUrl": "https://demo.dataverse.org/dataset.xhtml?persistentId=doi:", - "server": "https://demo.dataverse.org", - "parentDataverseAlias": "" -} \ No newline at end of file diff --git a/dmp-backend/depositinterface/pom.xml b/dmp-backend/depositinterface/pom.xml deleted file mode 100644 index bfdd74f3a..000000000 --- a/dmp-backend/depositinterface/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - 4.0.0 - - - org.springframework.boot - spring-boot-starter-parent - 2.7.4 - - - - eu.eudat - depositinterface - 1.0-SNAPSHOT - jar - - - - org.springframework.boot - spring-boot-starter-web - - - - diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java deleted file mode 100644 index 620f7b91a..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/DMPDepositModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package eu.eudat.depositinterface.models; - -import org.springframework.http.ResponseEntity; - -import java.io.File; -import java.util.Set; -import java.util.UUID; - -public class DMPDepositModel { - private UUID id; - private int version; - private String label; - private String description; - private boolean isPublic; - private Set users; - private Set organisations; - private Set researchers; - private GrantDepositModel grant; - private File pdfFile; - private String pdfFileName; - private ResponseEntity rdaJson; - private File supportingFilesZip; - private String previousDOI; - private String extraProperties; - - public UUID getId() { - return id; - } - public void setId(UUID id) { - this.id = id; - } - - public int getVersion() { - return version; - } - public void setVersion(int version) { - this.version = version; - } - - public String getLabel() { - return label; - } - public void setLabel(String label) { - this.label = label; - } - - public String getDescription() { - return description; - } - public void setDescription(String description) { - this.description = description; - } - - public boolean isPublic() { - return isPublic; - } - public void setPublic(boolean aPublic) { - isPublic = aPublic; - } - - public Set getUsers() { - return users; - } - public void setUsers(Set users) { - this.users = users; - } - - public Set getOrganisations() { - return organisations; - } - public void setOrganisations(Set organisations) { - this.organisations = organisations; - } - - public Set getResearchers() { - return researchers; - } - public void setResearchers(Set researchers) { - this.researchers = researchers; - } - - public GrantDepositModel getGrant() { - return grant; - } - public void setGrant(GrantDepositModel grant) { - this.grant = grant; - } - - public File getPdfFile() { - return pdfFile; - } - public void setPdfFile(File pdfFile) { - this.pdfFile = pdfFile; - } - - public String getPdfFileName() { - return pdfFileName; - } - public void setPdfFileName(String pdfFileName) { - this.pdfFileName = pdfFileName; - } - - public ResponseEntity getRdaJson() { - return rdaJson; - } - public void setRdaJson(ResponseEntity rdaJson) { - this.rdaJson = rdaJson; - } - - public File getSupportingFilesZip() { - return supportingFilesZip; - } - public void setSupportingFilesZip(File supportingFilesZip) { - this.supportingFilesZip = supportingFilesZip; - } - - public String getPreviousDOI() { - return previousDOI; - } - public void setPreviousDOI(String previousDOI) { - this.previousDOI = previousDOI; - } - - public String getExtraProperties() { - return extraProperties; - } - public void setExtraProperties(String extraProperties) { - this.extraProperties = extraProperties; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java deleted file mode 100644 index a7b505c1f..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/FunderDepositModel.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.eudat.depositinterface.models; - -public class FunderDepositModel { - private String label; - - public String getLabel() { - return label; - } - public void setLabel(String label) { - this.label = label; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java deleted file mode 100644 index fc7cffd7c..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/GrantDepositModel.java +++ /dev/null @@ -1,30 +0,0 @@ -package eu.eudat.depositinterface.models; - -import java.util.UUID; - -public class GrantDepositModel { - private UUID id; - private String reference; - private FunderDepositModel funder; - - public UUID getId() { - return id; - } - public void setId(UUID id) { - this.id = id; - } - - public String getReference() { - return reference; - } - public void setReference(String reference) { - this.reference = reference; - } - - public FunderDepositModel getFunder() { - return funder; - } - public void setFunder(FunderDepositModel funder) { - this.funder = funder; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java deleted file mode 100644 index 86ea84cb5..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/OrganisationDepositModel.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.eudat.depositinterface.models; - -public class OrganisationDepositModel { - private String label; - - public String getLabel() { - return label; - } - public void setLabel(String label) { - this.label = label; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java deleted file mode 100644 index f6aa0378d..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/ResearcherDepositModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package eu.eudat.depositinterface.models; - -public class ResearcherDepositModel { - private String label; - private String reference; - - public String getLabel() { - return label; - } - public void setLabel(String label) { - this.label = label; - } - - public String getReference() { - return reference; - } - public void setReference(String reference) { - this.reference = reference; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java deleted file mode 100644 index e7dae22b7..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserDMPDepositModel.java +++ /dev/null @@ -1,47 +0,0 @@ -package eu.eudat.depositinterface.models; - -public class UserDMPDepositModel { - - public enum UserDMPRoles { - OWNER(0), USER(1); - - private int value; - - UserDMPRoles(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - - public static UserDMPRoles fromInteger(int value) { - switch (value) { - case 0: - return OWNER; - case 1: - return USER; - default: - throw new RuntimeException("Unsupported User Dmp Role Message Code"); - } - } - } - - private UserInfoDepositModel user; - private Integer role; - - public UserInfoDepositModel getUser() { - return user; - } - public void setUser(UserInfoDepositModel user) { - this.user = user; - } - - public Integer getRole() { - return role; - } - public void setRole(Integer role) { - this.role = role; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java deleted file mode 100644 index aeb6d5f19..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/models/UserInfoDepositModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package eu.eudat.depositinterface.models; - -public class UserInfoDepositModel { - private String name; - private String email; - - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - - public String getEmail() { - return email; - } - public void setEmail(String email) { - this.email = email; - } -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java deleted file mode 100644 index 80b5bac3c..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java +++ /dev/null @@ -1,13 +0,0 @@ -package eu.eudat.depositinterface.repository; - -import eu.eudat.depositinterface.models.DMPDepositModel; - -public interface RepositoryDeposit { - - String deposit(DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception; - - String authenticate(String code); - - RepositoryDepositConfiguration getConfiguration(); - -} diff --git a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java b/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java deleted file mode 100644 index 883f95d74..000000000 --- a/dmp-backend/depositinterface/src/main/java/eu/eudat/depositinterface/repository/RepositoryDepositConfiguration.java +++ /dev/null @@ -1,112 +0,0 @@ -package eu.eudat.depositinterface.repository; - -public class RepositoryDepositConfiguration { - - public enum DepositType { - SystemDeposit(0), UserDeposit(1), BothWaysDeposit(2); - - private int value; - - DepositType(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - public static DepositType fromInteger(int value) { - switch (value) { - case 0: - return SystemDeposit; - case 1: - return UserDeposit; - case 2: - return BothWaysDeposit; - default: - throw new RuntimeException("Unsupported Deposit Account Type"); - } - } - } - - private int depositType; - private String repositoryId; - private String accessToken; - private String repositoryUrl; - private String repositoryAuthorizationUrl; - private String repositoryRecordUrl; - private String repositoryAccessTokenUrl; - private String repositoryClientId; - private String repositoryClientSecret; - private String redirectUri; - - public int getDepositType() { - return depositType; - } - public void setDepositType(int depositType) { - this.depositType = depositType; - } - - public String getRepositoryId() { - return repositoryId; - } - public void setRepositoryId(String repositoryId) { - this.repositoryId = repositoryId; - } - - public String getAccessToken() { - return accessToken; - } - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public String getRepositoryUrl() { - return repositoryUrl; - } - public void setRepositoryUrl(String repositoryUrl) { - this.repositoryUrl = repositoryUrl; - } - - public String getRepositoryAuthorizationUrl() { - return repositoryAuthorizationUrl; - } - public void setRepositoryAuthorizationUrl(String repositoryAuthorizationUrl) { - this.repositoryAuthorizationUrl = repositoryAuthorizationUrl; - } - - public String getRepositoryRecordUrl() { - return repositoryRecordUrl; - } - public void setRepositoryRecordUrl(String repositoryRecordUrl) { - this.repositoryRecordUrl = repositoryRecordUrl; - } - - public String getRepositoryAccessTokenUrl() { - return repositoryAccessTokenUrl; - } - public void setRepositoryAccessTokenUrl(String repositoryAccessTokenUrl) { - this.repositoryAccessTokenUrl = repositoryAccessTokenUrl; - } - - public String getRepositoryClientId() { - return repositoryClientId; - } - public void setRepositoryClientId(String repositoryClientId) { - this.repositoryClientId = repositoryClientId; - } - - public String getRepositoryClientSecret() { - return repositoryClientSecret; - } - public void setRepositoryClientSecret(String repositoryClientSecret) { - this.repositoryClientSecret = repositoryClientSecret; - } - - public String getRedirectUri() { - return redirectUri; - } - public void setRedirectUri(String redirectUri) { - this.redirectUri = redirectUri; - } -} diff --git a/dmp-backend/depositinterface/target/maven-archiver/pom.properties b/dmp-backend/depositinterface/target/maven-archiver/pom.properties deleted file mode 100644 index 20bd9443f..000000000 --- a/dmp-backend/depositinterface/target/maven-archiver/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -artifactId=depositinterface -groupId=eu.eudat -version=1.0-SNAPSHOT diff --git a/dmp-backend/zenodoRepository/pom.xml b/dmp-backend/zenodoRepository/pom.xml deleted file mode 100644 index afdd03335..000000000 --- a/dmp-backend/zenodoRepository/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.5.2 - - - eu.eudat.depositinterface - zenodoRepository - 0.0.1-SNAPSHOT - zenodoRepository - - - 11 - - - - - org.springframework.boot - spring-boot-starter-web - - - - eu.eudat - depositinterface - 1.0-SNAPSHOT - - - - org.json - json - 20160810 - - - - diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java deleted file mode 100644 index 72873bf9f..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoader.java +++ /dev/null @@ -1,8 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.config; - -import java.util.List; - -public interface ConfigLoader { - List getDOIFunders(); - ZenodoConfig getZenodoConfig(); -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java deleted file mode 100644 index d43b9dbee..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ConfigLoaderImpl.java +++ /dev/null @@ -1,60 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.config; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Service; - -import java.io.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Service("zenodoConfigLoader") -public class ConfigLoaderImpl implements ConfigLoader{ - private static final Logger logger = LoggerFactory.getLogger(ConfigLoaderImpl.class); - private static final ObjectMapper mapper = new ObjectMapper(); - - private List doiFunders = new ArrayList<>(); - private ZenodoConfig zenodoConfig; - - @Autowired - private Environment environment; - - @Override - public List getDOIFunders() { - if (doiFunders == null || doiFunders.isEmpty()) { - try { - List> tempdoiFunders = mapper.readValue(getStreamFromPath(environment.getProperty("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); - } - } - return doiFunders; - } - - @Override - public ZenodoConfig getZenodoConfig() { - if (zenodoConfig == null) { - try { - zenodoConfig = mapper.readValue(getStreamFromPath("zenodo.json"), ZenodoConfig.class); - } catch (IOException e) { - logger.error(e.getLocalizedMessage(), e); - } - } - return zenodoConfig; - } - - private InputStream getStreamFromPath(String filePath) { - try { - return new FileInputStream(filePath); - } catch (FileNotFoundException e) { - logger.info("loading from classpath"); - return getClass().getClassLoader().getResourceAsStream(filePath); - } - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/DOIFunder.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/DOIFunder.java deleted file mode 100644 index 88c7090a4..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/DOIFunder.java +++ /dev/null @@ -1,27 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.config; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class DOIFunder { - - @JsonProperty("Funder") - private String funder; - @JsonProperty("DOI") - private String DOI; - - public String getFunder() { - return funder; - } - - public void setFunder(String funder) { - this.funder = funder; - } - - public String getDOI() { - return DOI; - } - - public void setDOI(String DOI) { - this.DOI = DOI; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java deleted file mode 100644 index 763981ed5..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/config/ZenodoConfig.java +++ /dev/null @@ -1,140 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.config; - -import com.fasterxml.jackson.annotation.JsonProperty; -import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; - -public class ZenodoConfig { - - private enum DepositType { - SystemDeposit(0), UserDeposit(1), BothWaysDeposit(2); - - private final int value; - - DepositType(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - - public static DepositType fromInteger(int value) { - switch (value) { - case 0: - return SystemDeposit; - case 1: - return UserDeposit; - case 2: - return BothWaysDeposit; - default: - throw new RuntimeException("Unsupported Deposit Type"); - } - } - } - - @JsonProperty("depositType") - private int depositType; - @JsonProperty("repositoryId") - private String repositoryId; - @JsonProperty("accessToken") - private String accessToken; - @JsonProperty("repositoryUrl") - private String repositoryUrl; - @JsonProperty("repositoryAuthorizationUrl") - private String repositoryAuthorizationUrl; - @JsonProperty("repositoryRecordUrl") - private String repositoryRecordUrl; - @JsonProperty("repositoryAccessTokenUrl") - private String repositoryAccessTokenUrl; - @JsonProperty("repositoryClientId") - private String repositoryClientId; - @JsonProperty("repositoryClientSecret") - private String repositoryClientSecret; - @JsonProperty("redirectUri") - private String redirectUri; - - public int getDepositType() { - return depositType; - } - public void setDepositType(int depositType) { - this.depositType = depositType; - } - - public String getRepositoryId() { - return repositoryId; - } - public void setRepositoryId(String repositoryId) { - this.repositoryId = repositoryId; - } - - public String getAccessToken() { - return accessToken; - } - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - public String getRepositoryUrl() { - return repositoryUrl; - } - public void setRepositoryUrl(String repositoryUrl) { - this.repositoryUrl = repositoryUrl; - } - - public String getRepositoryAuthorizationUrl() { - return repositoryAuthorizationUrl; - } - public void setRepositoryAuthorizationUrl(String repositoryAuthorizationUrl) { - this.repositoryAuthorizationUrl = repositoryAuthorizationUrl; - } - - public String getRepositoryRecordUrl() { - return repositoryRecordUrl; - } - public void setRepositoryRecordUrl(String repositoryRecordUrl) { - this.repositoryRecordUrl = repositoryRecordUrl; - } - - public String getRepositoryAccessTokenUrl() { - return repositoryAccessTokenUrl; - } - public void setRepositoryAccessTokenUrl(String repositoryAccessTokenUrl) { - this.repositoryAccessTokenUrl = repositoryAccessTokenUrl; - } - - public String getRepositoryClientId() { - return repositoryClientId; - } - public void setRepositoryClientId(String repositoryClientId) { - this.repositoryClientId = repositoryClientId; - } - - public String getRepositoryClientSecret() { - return repositoryClientSecret; - } - public void setRepositoryClientSecret(String repositoryClientSecret) { - this.repositoryClientSecret = repositoryClientSecret; - } - - public String getRedirectUri() { - return redirectUri; - } - public void setRedirectUri(String redirectUri) { - this.redirectUri = redirectUri; - } - - public RepositoryDepositConfiguration toRepoConfig() { - RepositoryDepositConfiguration config = new RepositoryDepositConfiguration(); - config.setDepositType(this.depositType); - config.setRepositoryId(this.repositoryId); - config.setAccessToken(this.accessToken); - config.setRepositoryUrl(this.repositoryUrl); - config.setRepositoryAuthorizationUrl(this.repositoryAuthorizationUrl); - config.setRepositoryRecordUrl(this.repositoryRecordUrl); - config.setRepositoryAccessTokenUrl(this.repositoryAccessTokenUrl); - config.setRepositoryClientId(this.repositoryClientId); - config.setRepositoryClientSecret(this.repositoryClientSecret); - config.setRedirectUri(this.redirectUri); - return config; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java deleted file mode 100644 index 525cedba0..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/interfaces/ZenodoDeposit.java +++ /dev/null @@ -1,248 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.interfaces; - -import com.fasterxml.jackson.databind.ObjectMapper; -import eu.eudat.depositinterface.models.DMPDepositModel; -import eu.eudat.depositinterface.repository.RepositoryDeposit; -import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration; -import eu.eudat.depositinterface.zenodorepository.config.ConfigLoader; -import eu.eudat.depositinterface.zenodorepository.config.ZenodoConfig; -import eu.eudat.depositinterface.zenodorepository.mapper.DMPToZenodoMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.env.Environment; -import org.springframework.core.io.FileSystemResource; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.HttpServerErrorException; -import org.springframework.web.client.RestTemplate; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.nio.file.Files; -import java.util.*; - -@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; - - @Autowired - public ZenodoDeposit(ConfigLoader configLoader, Environment environment){ - this.configLoader = configLoader; - this.environment = environment; - } - - @Override - public String deposit(DMPDepositModel dmpDepositModel, String zenodoToken) throws Exception { - - RepositoryDepositConfiguration conf = this.getConfiguration(); - - if(zenodoToken == null){ - zenodoToken = conf.getAccessToken(); - } - - 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, "argos", "ARGOS", "https://argos.openaire.eu/", this.configLoader.getDOIFunders()); - - 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"); - } - 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; - ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); - createResponse = listResponses.getBody()[0]; - links = (LinkedHashMap) createResponse.get("links"); - //Second, make the new version (not in the links?) - String newVersionUrl = links.get("self") + "/actions/newversion" + "?access_token=" + zenodoToken; - createResponse = restTemplate.postForObject(newVersionUrl, null, Map.class); - 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); - 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; - } - } - 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. - File pdfFile = dmpDepositModel.getPdfFile(); - String fileName = dmpDepositModel.getPdfFileName(); - FileSystemResource fileSystemResource = new FileSystemResource(pdfFile); - HttpEntity addFileMapRequest = new HttpEntity<>(fileSystemResource, null); - - String addFileUrl = links.get("bucket") + "/" + fileName + "?access_token=" + zenodoToken; - restTemplate.put(addFileUrl, addFileMapRequest); - - ResponseEntity jsonFile = dmpDepositModel.getRdaJson(); - 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; - 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; - } - - return this.publish(publishUrl); - - } catch (HttpClientErrorException | HttpServerErrorException ex) { - Map parsedException = objectMapper.readValue(ex.getResponseBodyAsString(), HashMap.class); - throw new IOException(parsedException.get("message"), ex); - } - - } - - private String publish(String publishUrl){ - RestTemplate restTemplate = new RestTemplate(); - Map publishResponce = restTemplate.postForObject(publishUrl, "", Map.class); - return (String) publishResponce.get("conceptdoi"); - } - - - @Override - public RepositoryDepositConfiguration getConfiguration() { - ZenodoConfig zenodoConfig = this.configLoader.getZenodoConfig(); - return zenodoConfig.toRepoConfig(); - } - - @Override - public String authenticate(String code){ - - RepositoryDepositConfiguration conf = this.getConfiguration(); - - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - - 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; - } - - private String getUnpublishedDOI(String zenodoUrl, String DOI, String token, Integer version) { - try { - RestTemplate restTemplate = new RestTemplate(); - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); - headers.setContentType(MediaType.APPLICATION_JSON); - Map createResponse = null; - LinkedHashMap links = null; - LinkedHashMap metadata = null; - String listUrl = zenodoUrl + "deposit/depositions" + "?q=conceptdoi:\"" + DOI + "\"&access_token=" + token; - ResponseEntity listResponses = restTemplate.getForEntity(listUrl, Map[].class); - createResponse = listResponses.getBody()[0]; - metadata = (LinkedHashMap) createResponse.get("metadata"); - links = (LinkedHashMap) createResponse.get("links"); - - if (metadata.get("version").equals(version.toString())) { - return links.get("publish"); - } else { - return null; - } - }catch (Exception e) { - logger.warn(e.getMessage(), e); - return null; - } - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java deleted file mode 100644 index efc037599..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java +++ /dev/null @@ -1,119 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.mapper; - -import eu.eudat.depositinterface.models.DMPDepositModel; -import eu.eudat.depositinterface.models.OrganisationDepositModel; -import eu.eudat.depositinterface.models.UserDMPDepositModel; -import eu.eudat.depositinterface.zenodorepository.config.DOIFunder; -import eu.eudat.depositinterface.zenodorepository.models.*; - -import java.time.Instant; -import java.util.*; -import java.util.stream.Collectors; - -public class DMPToZenodoMapper { - - public static ZenodoDeposit fromDMP(DMPDepositModel dmp, String zenodoCommunity, String zenodoAffiliation, String domain, List doiFunders) { - Map extraProperties = dmp.getExtraProperties() != null ? new org.json.JSONObject(dmp.getExtraProperties()).toMap() : new HashMap<>(); - ZenodoDeposit deposit = new ZenodoDeposit(); - deposit.setMetadata(new ZenodoDepositMetadata()); - deposit.getMetadata().setTitle(dmp.getLabel()); - deposit.getMetadata().setUploadType("publication"); - deposit.getMetadata().setPublicationType("datamanagementplan"); - deposit.getMetadata().setDescription((dmp.getDescription() != null && !dmp.getDescription().isEmpty() ? dmp.getDescription() : "

")); - deposit.getMetadata().setVersion(String.valueOf(dmp.getVersion())); - if(zenodoCommunity != null && !zenodoAffiliation.isEmpty()) { - ZenodoComunity community = new ZenodoComunity(); - community.setIdentifier(zenodoCommunity); - deposit.getMetadata().setCommunities(Collections.singletonList(community)); - } - if (extraProperties.get("visible") == null) { - deposit.getMetadata().setAccessRight(ZenodoAccessRight.RESTRICTED); - deposit.getMetadata().setAccessConditions(""); - } else { - if (((Boolean) extraProperties.get("visible"))) { - Instant publicationDate = Instant.parse(extraProperties.get("publicDate").toString()); - if (publicationDate.isBefore(Instant.now())) { - deposit.getMetadata().setAccessRight(ZenodoAccessRight.OPEN); - } else { - deposit.getMetadata().setAccessRight(ZenodoAccessRight.EMBARGOED); - deposit.getMetadata().setEmbargoDate(publicationDate.toString()); - } - - if (extraProperties.get("license") != null) { - deposit.getMetadata().setLicense(((Map) extraProperties.get("license")).get("pid").toString()); - } - } else { - deposit.getMetadata().setAccessRight(ZenodoAccessRight.RESTRICTED); - deposit.getMetadata().setAccessConditions(""); - } - } - if (dmp.isPublic()) { - ZenodoRelator relator = new ZenodoRelator(); - relator.setIdentifier(domain + "/external/zenodo/" + dmp.getId().toString()); - relator.setRelation("isIdenticalTo"); - deposit.getMetadata().setRelatedIdentifiers(Collections.singletonList(relator)); - } - deposit.getMetadata().setContributors(new LinkedList<>()); - List contributors = dmp.getUsers().stream().map(userDMP -> { - ZenodoContributor contributor = new ZenodoContributor(); - contributor.setName(userDMP.getUser().getName()); - contributor.setType("ProjectMember"); - if (dmp.getOrganisations() != null && !dmp.getOrganisations().isEmpty()) { - contributor.setAffiliation(dmp.getOrganisations() - .stream().map(OrganisationDepositModel::getLabel).collect(Collectors.joining(", "))); - } else { - if(zenodoAffiliation != null && !zenodoAffiliation.isEmpty()) { - contributor.setAffiliation(zenodoAffiliation); - } - } - return contributor; - }).collect(Collectors.toList()); - - List researchers = dmp.getResearchers().stream().map(researcher -> { - ZenodoContributor contributor = new ZenodoContributor(); - contributor.setName(researcher.getLabel()); - contributor.setType("Researcher"); - String referenceHead = researcher.getReference().split(":")[0]; - String referenceTail = researcher.getReference().replace(referenceHead + ":", ""); - contributor.setAffiliation(referenceHead); - if (referenceHead.equalsIgnoreCase("ORCID")) { - contributor.setOrcid(referenceTail); - } - return contributor; - }).collect(Collectors.toList()); - - deposit.getMetadata().getContributors().addAll(contributors); - deposit.getMetadata().getContributors().addAll(researchers); - - if (dmp.getGrant().getReference() == null) { - dmp.getGrant().setReference("dmp:" + dmp.getGrant().getId()); - } - String grantReferenceHead = dmp.getGrant().getReference().split(":")[0]; - if (grantReferenceHead.equals("openaire")) { - String grantReferenceTail = dmp.getGrant().getReference().split(":")[3]; - DOIFunder doiFunder = doiFunders.stream() - .filter(doiFunder1 -> dmp.getGrant().getFunder().getLabel().contains(doiFunder1.getFunder()) || doiFunder1.getFunder().contains(dmp.getGrant().getFunder().getLabel())) - .findFirst().orElse(null); - if (doiFunder != null) { - String finalId = doiFunder.getDOI() + "::" + grantReferenceTail; - ZenodoGrant grant = new ZenodoGrant(); - grant.setId(finalId); - deposit.getMetadata().setGrants(Collections.singletonList(grant)); - } - } - ZenodoContributor creator = new ZenodoContributor(); - creator.setName(dmp.getUsers().stream().filter(userDMP -> userDMP.getRole().equals(UserDMPDepositModel.UserDMPRoles.OWNER.getValue())).findFirst().get().getUser().getName()); - if (dmp.getOrganisations() != null && !dmp.getOrganisations().isEmpty()) { - creator.setAffiliation(dmp.getOrganisations() - .stream().map(OrganisationDepositModel::getLabel).collect(Collectors.joining(", "))); - } else { - if(zenodoAffiliation != null && !zenodoAffiliation.isEmpty()) { - creator.setAffiliation(zenodoAffiliation); - } - } - deposit.getMetadata().setCreators(Collections.singletonList(creator)); - - return deposit; - } -} - diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoAccessRight.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoAccessRight.java deleted file mode 100644 index 0cf6cd4b6..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoAccessRight.java +++ /dev/null @@ -1,18 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonValue; - -public enum ZenodoAccessRight { - RESTRICTED("restricted"), EMBARGOED("embargoed"), OPEN("open"); - - private final String value; - - ZenodoAccessRight(String value) { - this.value = value; - } - - @JsonValue - public String getValue() { - return value; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoComunity.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoComunity.java deleted file mode 100644 index a04a19c17..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoComunity.java +++ /dev/null @@ -1,19 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ZenodoComunity { - - private String identifier; - - public String getIdentifier() { - return identifier; - } - - public void setIdentifier(String identifier) { - this.identifier = identifier; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoContributor.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoContributor.java deleted file mode 100644 index c172d5220..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoContributor.java +++ /dev/null @@ -1,45 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ZenodoContributor { - private String name; - private String type; - private String affiliation; - private String orcid; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getAffiliation() { - return affiliation; - } - - public void setAffiliation(String affiliation) { - this.affiliation = affiliation; - } - - public String getOrcid() { - return orcid; - } - - public void setOrcid(String orcid) { - this.orcid = orcid; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoDeposit.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoDeposit.java deleted file mode 100644 index c27c2530f..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoDeposit.java +++ /dev/null @@ -1,19 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ZenodoDeposit { - - private ZenodoDepositMetadata metadata; - - public ZenodoDepositMetadata getMetadata() { - return metadata; - } - - public void setMetadata(ZenodoDepositMetadata metadata) { - this.metadata = metadata; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoDepositMetadata.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoDepositMetadata.java deleted file mode 100644 index 041f9623e..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoDepositMetadata.java +++ /dev/null @@ -1,158 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.List; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ZenodoDepositMetadata { - - private String title; - - @JsonProperty("upload_type") - private String uploadType; - - @JsonProperty("publication_type") - private String publicationType; - - private String description; - - private String version; - - private List communities; - - @JsonProperty("access_right") - private ZenodoAccessRight accessRight; - - @JsonProperty("access_conditions") - private String accessConditions; - - @JsonProperty("embargo_date") - private String embargoDate; - - private String license; - - @JsonProperty("related_identifiers") - private List relatedIdentifiers; - - private List contributors; - - private List grants; - - private List creators; - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getUploadType() { - return uploadType; - } - - public void setUploadType(String uploadType) { - this.uploadType = uploadType; - } - - public String getPublicationType() { - return publicationType; - } - - public void setPublicationType(String publicationType) { - this.publicationType = publicationType; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public List getCommunities() { - return communities; - } - - public void setCommunities(List communities) { - this.communities = communities; - } - - public ZenodoAccessRight getAccessRight() { - return accessRight; - } - - public void setAccessRight(ZenodoAccessRight accessRight) { - this.accessRight = accessRight; - } - - public String getAccessConditions() { - return accessConditions; - } - - public void setAccessConditions(String accessConditions) { - this.accessConditions = accessConditions; - } - - public String getEmbargoDate() { - return embargoDate; - } - - public void setEmbargoDate(String embargoDate) { - this.embargoDate = embargoDate; - } - - public String getLicense() { - return license; - } - - public void setLicense(String license) { - this.license = license; - } - - public List getRelatedIdentifiers() { - return relatedIdentifiers; - } - - public void setRelatedIdentifiers(List relatedIdentifiers) { - this.relatedIdentifiers = relatedIdentifiers; - } - - public List getContributors() { - return contributors; - } - - public void setContributors(List contributors) { - this.contributors = contributors; - } - - public List getGrants() { - return grants; - } - - public void setGrants(List grants) { - this.grants = grants; - } - - public List getCreators() { - return creators; - } - - public void setCreators(List creators) { - this.creators = creators; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoGrant.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoGrant.java deleted file mode 100644 index d37c6575e..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoGrant.java +++ /dev/null @@ -1,18 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ZenodoGrant { - private String id; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoRelator.java b/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoRelator.java deleted file mode 100644 index 8196f63a3..000000000 --- a/dmp-backend/zenodoRepository/src/main/java/eu/eudat/depositinterface/zenodorepository/models/ZenodoRelator.java +++ /dev/null @@ -1,28 +0,0 @@ -package eu.eudat.depositinterface.zenodorepository.models; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ZenodoRelator { - - private String identifier; - private String relation; - - public String getIdentifier() { - return identifier; - } - - public void setIdentifier(String identifier) { - this.identifier = identifier; - } - - public String getRelation() { - return relation; - } - - public void setRelation(String relation) { - this.relation = relation; - } -} diff --git a/dmp-backend/zenodoRepository/src/main/resources/DOI_Funder.json b/dmp-backend/zenodoRepository/src/main/resources/DOI_Funder.json deleted file mode 100644 index 9f1c4856d..000000000 --- a/dmp-backend/zenodoRepository/src/main/resources/DOI_Funder.json +++ /dev/null @@ -1,70 +0,0 @@ -[ - { - "Funder": "Australian Research Council", - "DOI": "10.13039/501100000923" - }, - { - "Funder": "Austrian Science Fund", - "DOI": "10.13039/501100002428" - }, - { - "Funder": "European Commission", - "DOI": "10.13039/501100000780" - }, - { - "Funder": "European Environment Agency", - "DOI": "10.13039/501100000806" - }, - { - "Funder": "Academy of Finland", - "DOI": "10.13039/501100002341" - }, - { - "Funder": "Hrvatska Zaklada za Znanost", - "DOI": "10.13039/501100004488" - }, - { - "Funder": "Fundação para a Ciência e a Tecnologia", - "DOI": "10.13039/501100001871" - }, - { - "Funder": "Ministarstvo Prosvete, Nauke i Tehnološkog Razvoja", - "DOI": "10.13039/501100004564" - }, - { - "Funder": "Ministarstvo Znanosti, Obrazovanja i Sporta", - "DOI": "10.13039/501100006588" - }, - { - "Funder": "National Health and Medical Research Council", - "DOI": "10.13039/501100000925" - }, - { - "Funder": "National Institutes of Health", - "DOI": "10.13039/100000002" - }, - { - "Funder": "National Science Foundation", - "DOI": "10.13039/100000001" - }, - { - "Funder": "Nederlandse Organisatie voor Wetenschappelijk Onderzoek", - "DOI": "10.13039/501100003246" - }, - { - "Funder": "Research Councils", - "DOI": "10.13039/501100000690" - }, - { - "Funder": "Schweizerischer Nationalfonds zur Förderung der wissenschaftlichen Forschung", - "DOI": "10.13039/501100001711" - }, - { - "Funder": "Science Foundation Ireland", - "DOI": "10.13039/501100001602" - }, - { - "Funder": "Wellcome Trust", - "DOI": "10.13039/100004440" - } -] \ No newline at end of file diff --git a/dmp-backend/zenodoRepository/src/main/resources/application.properties b/dmp-backend/zenodoRepository/src/main/resources/application.properties deleted file mode 100644 index 10cc38d04..000000000 --- a/dmp-backend/zenodoRepository/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -configuration.doi_funder=DOI_Funder.json -storage.temp=${ZENODO_TMP} -configuration.zenodo=${ZENODO_CONF} diff --git a/dmp-backend/zenodoRepository/src/main/resources/zenodo.json b/dmp-backend/zenodoRepository/src/main/resources/zenodo.json deleted file mode 100644 index 2dd32fd6b..000000000 --- a/dmp-backend/zenodoRepository/src/main/resources/zenodo.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "depositType": 2, - "repositoryId": "Zenodo", - "accessToken": "", - "repositoryUrl": "https://sandbox.zenodo.org/api/", - "repositoryAuthorizationUrl": "https://sandbox.zenodo.org/oauth/authorize", - "repositoryRecordUrl": "https://sandbox.zenodo.org/record/", - "repositoryAccessTokenUrl": "https://sandbox.zenodo.org/oauth/token", - "repositoryClientId": "", - "repositoryClientSecret": "", - "redirectUri": "http://localhost:4200/login/external/zenodo" -} \ No newline at end of file