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