Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
Aldo Mihasi | 2acd2b5031 | |
Aldo Mihasi | e56017f083 | |
Aldo Mihasi | 05439a8af6 | |
Aldo Mihasi | 17817d7fb5 | |
Aldo Mihasi | 586f161b9a | |
Aldo Mihasi | cf8f2852d5 | |
Aldo Mihasi | 640b96e43f | |
Aldo Mihasi | b17719ab43 | |
Aldo Mihasi | 60368bc98c | |
Aldo Mihasi | 153e44986d | |
Aldo Mihasi | 2f419767eb |
|
@ -0,0 +1,25 @@
|
|||
# Using dataverse repository with Argos
|
||||
|
||||
The repository-deposit-dataverse module implements the [https://code-repo.d4science.org/MaDgiK-CITE/repository-deposit-base](https://) interface for the dataverse repository.
|
||||
|
||||
## Setup
|
||||
|
||||
After creating the jar from the project, environment variables should be set since they are used in the application.properties
|
||||
1) STORAGE_TMP_DATAVERSE - a temporary storage needed
|
||||
2) CONFIGURATION_DATAVERSE - path to json file which includes the configuration for the repository
|
||||
|
||||
### JSON configuration file
|
||||
|
||||
The following fields should be set:<br>
|
||||
**depositType** - an integer representing how the dmp user can deposit in the repository,<br>
|
||||
a. **0** stands for system deposition meaning the dmp is deposited using argos credentials to the repository,<br>
|
||||
b. **1** stands for user deposition in which the argos user specifies his/her own credentials to the repository,<br>
|
||||
c. **2** stands for both ways deposition if the repository allows the deposits of dmps to be made from both argos and users accounts<br>
|
||||
note: depositType should be set to **0** since dataverse does not provide oauth2 protocol but, instead, uses api tokens<br>
|
||||
**repositoryId** - unique identifier for the repository<br>
|
||||
**apiToken** - api token provided for the depositions<br>
|
||||
**repositoryUrl** - repository's api url e.g. "https://demo.dataverse.org/api/"<br>
|
||||
**repositoryRecordUrl** - repository's record url, this url is used to index dmps that are created e.g. "https://demo.dataverse.org/dataset.xhtml?persistentId=doi:"<br>
|
||||
**server** - repository's server url e.g. "https://demo.dataverse.org"<br>
|
||||
**parentDataverseAlias** - dataverse alias in which all dmps that are deposited will be resided, **note**: the dataverse alias used should be published before making any dmp deposit<br>
|
||||
**hasLogo** - if the repository has a logo<br>
|
3
pom.xml
3
pom.xml
|
@ -58,7 +58,7 @@
|
|||
<dependency>
|
||||
<groupId>gr.cite.opendmp</groupId>
|
||||
<artifactId>repositorydepositbase</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<version>1.0.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -113,6 +113,7 @@
|
|||
<artifact>*:*</artifact>
|
||||
<excludes>
|
||||
<exclude>module-info.class</exclude>
|
||||
<exclude>javax/**/*</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
<!-- </filters>-->
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package eu.eudat.depositinterface.dataverserepository.config;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ConfigLoader {
|
||||
DataverseConfig getDataverseConfig();
|
||||
byte[] getLogo(String repositoryId);
|
||||
List<DataverseConfig> getDataverseConfig();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.eudat.depositinterface.dataverserepository.config;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -11,27 +12,58 @@ import java.io.FileInputStream;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@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;
|
||||
private List<DataverseConfig> dataverseConfigs = new ArrayList<>();
|
||||
|
||||
private final Environment environment;
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
public ConfigLoaderImpl(Environment environment){
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataverseConfig getDataverseConfig() {
|
||||
if(dataverseConfig == null){
|
||||
public List<DataverseConfig> getDataverseConfig() {
|
||||
if(dataverseConfigs == null || dataverseConfigs.isEmpty()){
|
||||
try{
|
||||
dataverseConfig = mapper.readValue(getStreamFromPath(environment.getProperty("configuration.dataverse")), DataverseConfig.class);
|
||||
dataverseConfigs = mapper.readValue(getStreamFromPath(environment.getProperty("dataverse.plugin.configuration.dataverse")), new TypeReference<List<DataverseConfig>>() {});
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
return dataverseConfig;
|
||||
return dataverseConfigs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getLogo(String repositoryId) {
|
||||
if (!dataverseConfigs.isEmpty()) {
|
||||
DataverseConfig dataverseConfig = dataverseConfigs.stream().filter(x -> x.getRepositoryId().equals(repositoryId)).findFirst().orElse(null);
|
||||
if (dataverseConfig != null) {
|
||||
String logo = dataverseConfig.getLogo();
|
||||
InputStream logoStream;
|
||||
if (logo != null && !logo.isEmpty()) {
|
||||
logoStream = getStreamFromPath(logo);
|
||||
}
|
||||
else {
|
||||
logoStream = getClass().getClassLoader().getResourceAsStream("dataverse.png");
|
||||
}
|
||||
try {
|
||||
return (logoStream != null) ? logoStream.readAllBytes() : null;
|
||||
}
|
||||
catch (IOException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private InputStream getStreamFromPath(String filePath) {
|
||||
|
|
|
@ -45,6 +45,10 @@ public class DataverseConfig {
|
|||
private String server;
|
||||
@JsonProperty("parentDataverseAlias")
|
||||
private String parentDataverseAlias;
|
||||
@JsonProperty("hasLogo")
|
||||
private boolean hasLogo;
|
||||
@JsonProperty("logo")
|
||||
private String logo;
|
||||
|
||||
public int getDepositType() {
|
||||
return depositType;
|
||||
|
@ -95,12 +99,27 @@ public class DataverseConfig {
|
|||
this.parentDataverseAlias = parentDataverseAlias;
|
||||
}
|
||||
|
||||
public boolean isHasLogo() {
|
||||
return hasLogo;
|
||||
}
|
||||
public void setHasLogo(boolean hasLogo) {
|
||||
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);
|
||||
config.setRepositoryId(this.repositoryId);
|
||||
config.setRepositoryUrl(this.repositoryUrl);
|
||||
config.setRepositoryRecordUrl(this.repositoryRecordUrl);
|
||||
config.setHasLogo(this.hasLogo);
|
||||
return config;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ 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.models.FileEnvelope;
|
||||
import eu.eudat.depositinterface.repository.RepositoryDeposit;
|
||||
import eu.eudat.depositinterface.repository.RepositoryDepositConfiguration;
|
||||
import org.json.JSONObject;
|
||||
|
@ -44,81 +45,85 @@ 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;
|
||||
private final ConfigLoader configLoader;
|
||||
private final 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 {
|
||||
public String deposit(String repositoryId, DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception {
|
||||
|
||||
if(!this.isApiSet)
|
||||
this.setDataverseApi();
|
||||
eu.eudat.depositinterface.dataverserepository.config.DataverseConfig jsonConfig = this.configLoader.getDataverseConfig().stream().filter(x -> x.getRepositoryId().equals(repositoryId)).findFirst().orElse(null);
|
||||
|
||||
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());
|
||||
if(jsonConfig != null) {
|
||||
|
||||
doi = this.api.getDatasetOperations().getDataset(id).getDoiId().orElse(null);
|
||||
DataverseAPI api = new DataverseAPIImpl();
|
||||
DataverseConfig config = new DataverseConfig(new URL(jsonConfig.getServer()), jsonConfig.getApiToken(), jsonConfig.getParentDataverseAlias());
|
||||
api.configure(config);
|
||||
|
||||
this.uploadFiles(dmpDepositModel, doi);
|
||||
|
||||
this.api.getDatasetOperations().publishDataset(id, MAJOR);
|
||||
}
|
||||
else{
|
||||
Map<String, Object> 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<JsonNode> files = jsonNode.findValues("dataFile");
|
||||
for(JsonNode file: files){
|
||||
int fileId = file.get("id").asInt();
|
||||
this.deleteFile(fileId);
|
||||
String dmpDescription = dmpDepositModel.getDescription();
|
||||
if (dmpDescription == null || dmpDescription.isEmpty()) {
|
||||
dmpDescription = "-";
|
||||
}
|
||||
|
||||
this.uploadFiles(dmpDepositModel, dmpDepositModel.getPreviousDOI());
|
||||
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(dmpDescription).build())
|
||||
.languages(new ArrayList<>())
|
||||
.depositor("")
|
||||
.build();
|
||||
|
||||
if (dmpDepositModel.getPreviousDOI() == null || dmpDepositModel.getPreviousDOI().isEmpty()) {
|
||||
Identifier id = api.getDataverseOperations().createDataset(dataset, jsonConfig.getParentDataverseAlias());
|
||||
|
||||
doi = api.getDatasetOperations().getDataset(id).getDoiId().orElse(null);
|
||||
|
||||
this.uploadFiles(jsonConfig, dmpDepositModel, doi);
|
||||
|
||||
api.getDatasetOperations().publishDataset(id, MAJOR);
|
||||
} else {
|
||||
Map<String, Object> datasetJson = this.getDatasetIdentifier(jsonConfig, dmpDepositModel.getPreviousDOI());
|
||||
Identifier id = new Identifier();
|
||||
id.setId(((Integer) datasetJson.get("id")).longValue());
|
||||
JsonNode jsonNode = objectMapper.convertValue(datasetJson, JsonNode.class);
|
||||
JsonNode latestVersion = jsonNode.get("latestVersion");
|
||||
JsonNode files = latestVersion.get("files");
|
||||
if (files.isArray()) {
|
||||
for (JsonNode file : files) {
|
||||
int fileId = file.get("dataFile").get("id").asInt();
|
||||
this.deleteFile(jsonConfig, fileId);
|
||||
}
|
||||
}
|
||||
|
||||
this.uploadFiles(jsonConfig, dmpDepositModel, dmpDepositModel.getPreviousDOI());
|
||||
|
||||
api.getDatasetOperations().updateDataset(dataset, id);
|
||||
DataverseResponse<PublishedDataset> publishedDataset = api.getDatasetOperations().publishDataset(id, MAJOR);
|
||||
doi = publishedDataset.getData().getAuthority() + "/" + publishedDataset.getData().getIdentifier();
|
||||
}
|
||||
|
||||
|
||||
return doi;
|
||||
|
||||
this.api.getDatasetOperations().updateDataset(dataset, id);
|
||||
DataverseResponse<PublishedDataset> publishedDataset = this.api.getDatasetOperations().publishDataset(id, MAJOR);
|
||||
doi = publishedDataset.getData().getAuthority() + "/" + publishedDataset.getData().getIdentifier();
|
||||
}
|
||||
|
||||
|
||||
return doi;
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
private void deleteFile(eu.eudat.depositinterface.dataverserepository.config.DataverseConfig jsonConfig, int fileId){
|
||||
HttpHeaders headers = this.createBasicAuthHeaders(jsonConfig.getApiToken(), "");
|
||||
String serverUrl = jsonConfig.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);
|
||||
}
|
||||
|
@ -133,40 +138,52 @@ public class DataverseDeposit implements RepositoryDeposit {
|
|||
}};
|
||||
}
|
||||
|
||||
private void uploadFiles(DMPDepositModel dmpDepositModel, String doi) throws IOException {
|
||||
this.uploadFile(dmpDepositModel.getPdfFileName(), dmpDepositModel.getPdfFile(), doi);
|
||||
private void uploadFiles(eu.eudat.depositinterface.dataverserepository.config.DataverseConfig jsonConfig, DMPDepositModel dmpDepositModel, String doi) throws IOException {
|
||||
this.uploadFile(jsonConfig, dmpDepositModel.getPdfFile().getFilename(), dmpDepositModel.getPdfFile().getFile(), doi);
|
||||
|
||||
String contentDisposition = dmpDepositModel.getRdaJson().getHeaders().get("Content-Disposition").get(0);
|
||||
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<byte[]> jsonFile = new ResponseEntity<>(content, responseHeaders, HttpStatus.OK);
|
||||
|
||||
String contentDisposition = jsonFile.getHeaders().get("Content-Disposition").get(0);
|
||||
String jsonFileName = contentDisposition.substring(contentDisposition.lastIndexOf('=') + 1);
|
||||
File rdaJson = new File(this.environment.getProperty("storage.temp") + jsonFileName);
|
||||
File rdaJson = new File(this.environment.getProperty("dataverse_plugin.storage.temp") + jsonFileName);
|
||||
OutputStream output = new FileOutputStream(rdaJson);
|
||||
try {
|
||||
output.write(Objects.requireNonNull(dmpDepositModel.getRdaJson().getBody()));
|
||||
output.write(Objects.requireNonNull(jsonFile.getBody()));
|
||||
output.flush();
|
||||
output.close();
|
||||
} catch (IOException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
this.uploadFile(jsonFileName, rdaJson, doi);
|
||||
this.uploadFile(jsonConfig, jsonFileName, rdaJson, doi);
|
||||
Files.deleteIfExists(rdaJson.toPath());
|
||||
|
||||
if(dmpDepositModel.getSupportingFilesZip() != null) {
|
||||
this.uploadFile(dmpDepositModel.getSupportingFilesZip().getName(), dmpDepositModel.getSupportingFilesZip(), doi);
|
||||
this.uploadFile(jsonConfig, dmpDepositModel.getSupportingFilesZip().getName(), dmpDepositModel.getSupportingFilesZip(), doi);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> getDatasetIdentifier(String previousDOI) {
|
||||
private Map<String, Object> getDatasetIdentifier(eu.eudat.depositinterface.dataverserepository.config.DataverseConfig jsonConfig, 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;
|
||||
headers.set("X-Dataverse-key", jsonConfig.getApiToken());
|
||||
String serverUrl = jsonConfig.getServer() + "/api/datasets/:persistentId?persistentId=doi:" + previousDOI;
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
return (Map<String, Object>) restTemplate.exchange(serverUrl, HttpMethod.GET, new HttpEntity<>(headers), Map.class).getBody().get("data");
|
||||
}
|
||||
|
||||
private void uploadFile(String filename, File file, String doi) throws IOException {
|
||||
private void uploadFile(eu.eudat.depositinterface.dataverserepository.config.DataverseConfig jsonConfig, 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());
|
||||
headers.set("X-Dataverse-key", jsonConfig.getApiToken());
|
||||
MultiValueMap<String, String> fileMap = new LinkedMultiValueMap<>();
|
||||
ContentDisposition contentDisposition = ContentDisposition
|
||||
.builder("form-data")
|
||||
|
@ -181,20 +198,32 @@ public class DataverseDeposit implements RepositoryDeposit {
|
|||
HttpEntity<MultiValueMap<String, Object>> requestEntity
|
||||
= new HttpEntity<>(body, headers);
|
||||
|
||||
String serverUrl = this.configLoader.getDataverseConfig().getServer() + "/api/datasets/:persistentId/add?persistentId=doi:" + doi;
|
||||
String serverUrl = jsonConfig.getServer() + "/api/datasets/:persistentId/add?persistentId=doi:" + doi;
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<Object> resp = restTemplate.postForEntity(serverUrl, requestEntity, Object.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RepositoryDepositConfiguration getConfiguration() {
|
||||
eu.eudat.depositinterface.dataverserepository.config.DataverseConfig dataverseConfig = this.configLoader.getDataverseConfig();
|
||||
return dataverseConfig.toRepoConfig();
|
||||
public List<RepositoryDepositConfiguration> getConfiguration() {
|
||||
List<eu.eudat.depositinterface.dataverserepository.config.DataverseConfig> dataverseConfigs = this.configLoader.getDataverseConfig();
|
||||
return dataverseConfigs.stream().map(eu.eudat.depositinterface.dataverserepository.config.DataverseConfig::toRepoConfig).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String authenticate(String code) {
|
||||
public String authenticate(String repositoryId, String code) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
storage.temp=${STORAGE_TMP_DATAVERSE}
|
||||
configuration.dataverse=${CONFIGURATION_DATAVERSE}
|
||||
dataverse_plugin.storage.temp=${STORAGE_TMP_DATAVERSE}
|
||||
dataverse.plugin.configuration.dataverse=${CONFIGURATION_DATAVERSE}
|
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
Loading…
Reference in New Issue