Skip to content

Commit d6d3bec

Browse files
authored
License fix & metadataLanguage in DatasetFacade (#32)
* Add metadatalanguage to Dataset and DatasetFacade, and test it * New DataverseOperation for querying metadata language * Add a license when creating a dataset
1 parent 8405035 commit d6d3bec

9 files changed

Lines changed: 67 additions & 3 deletions

File tree

src/integration-test/java/com/researchspace/dataverse/http/DatasetOperationsTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import com.researchspace.dataverse.entities.*;
77
import com.researchspace.dataverse.entities.facade.DatasetFacade;
8+
import com.researchspace.dataverse.entities.facade.License;
9+
810
import org.apache.commons.io.FileUtils;
911
import org.apache.commons.lang.RandomStringUtils;
1012
import org.junit.Before;
@@ -15,6 +17,7 @@
1517
import java.io.File;
1618
import java.io.IOException;
1719
import java.net.MalformedURLException;
20+
import java.net.URI;
1821
import java.net.URISyntaxException;
1922
import java.util.Arrays;
2023
import java.util.List;
@@ -161,6 +164,15 @@ public void testUploadFile() {
161164
datasetOps.uploadFile(ds.getDoiId().get(), getTestFile(), ds.getProtocol());
162165
}
163166

167+
@Test
168+
public void testCreateDatasetWithLicense() throws URISyntaxException {
169+
DatasetFacade facade = createFacadeWithMetadataLanguage();
170+
facade.setLicense(new License("CC0 1.0", new URI("http://creativecommons.org/publicdomain/zero/1.0")));
171+
Identifier datasetId = dataverseOps.createDataset(facade, dataverseAlias);
172+
Dataset ds = datasetOps.getDataset(datasetId);
173+
assertEquals("CC0 1.0", ds.getLatestVersion().getLicense().getName());
174+
}
175+
164176
private File getTestFile() {
165177
return new File("src/integration-test/resources/ResizablePng.zip");
166178
}

src/integration-test/java/com/researchspace/dataverse/http/DataverseOperationsTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.junit.Test;
1212

1313
import java.util.Arrays;
14+
import java.util.List;
15+
import java.util.Map;
1416

1517
import static org.junit.Assert.*;
1618
/** <pre>
@@ -93,4 +95,12 @@ public void testGetDataverseById() {
9395
assertNotNull(dv.getId());
9496
assertTrue(dv.getContactEmails().size() > 0);
9597
}
98+
99+
@Test
100+
public void testGetDatasetMetadataLanguage() {
101+
// only works if dataverseAlias belongs to a dataverse collection with enlish as its metadatalanguage
102+
DataverseResponse<List<Map<String, String>>> langMap = dataverseOps
103+
.getDataverseMetadataLanguage(dataverseAlias);
104+
assertEquals("en", langMap.getData().get(0).get("locale"));
105+
}
96106
}

src/main/java/com/researchspace/dataverse/api/v1/DataverseConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import lombok.AllArgsConstructor;
99
import lombok.EqualsAndHashCode;
1010
import lombok.Getter;
11+
import lombok.NoArgsConstructor;
1112
import lombok.ToString;
1213
/**
1314
<pre>
@@ -32,6 +33,7 @@
3233
@EqualsAndHashCode(of={"serverURL"})
3334
@AllArgsConstructor
3435
@ToString()
36+
@NoArgsConstructor
3537
public class DataverseConfig {
3638

3739
private @Getter URL serverURL;

src/main/java/com/researchspace/dataverse/api/v1/DataverseOperations.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.io.IOException;
77
import java.util.List;
8+
import java.util.Map;
89

910
import com.researchspace.dataverse.entities.DataversePost;
1011
import com.researchspace.dataverse.entities.DataverseGet;
@@ -87,4 +88,6 @@ public interface DataverseOperations {
8788
*/
8889
DataverseResponse<DataversePost> publishDataverse(String dataverseAlias);
8990

91+
DataverseResponse<List<Map<String, String>>> getDataverseMetadataLanguage(String alias);
92+
9093
}

src/main/java/com/researchspace/dataverse/entities/DatasetVersion.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import java.util.Date;
77

8+
import com.researchspace.dataverse.entities.facade.License;
9+
810
import lombok.Data;
911
/** <pre>
1012
Copyright 2016 ResearchSpace
@@ -31,5 +33,5 @@ public class DatasetVersion {
3133
private Date createTime;
3234
private DataSetMetadataBlock metadataBlocks;
3335
private int versionNumber, versionMinorNumber;
34-
36+
private License license;
3537
}

src/main/java/com/researchspace/dataverse/entities/facade/DatasetBuilder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ public Dataset build(DatasetFacade facade) {
8282
dv.setMetadataBlocks(blocks);
8383
blocks.setCitation(citation);
8484
citation.setFields(fields);
85+
License license = facade.getLicense();
86+
if (license != null) {
87+
dv.setLicense(license);
88+
}
8589
Dataset toSubmit = new Dataset();
8690
toSubmit.setDatasetVersion(dv);
8791
String metadataLanguage = facade.getMetadataLanguage();

src/main/java/com/researchspace/dataverse/entities/facade/DatasetFacade.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public class DatasetFacade {
5151
private String productionPlace;
5252
private @Singular List<DatasetContributor> contributors;
5353
private String metadataLanguage;
54-
54+
private License license;
55+
5556
/**
5657
* Returns a copy if the internally stored Date
5758
* @return
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.researchspace.dataverse.entities.facade;
2+
3+
import java.net.URI;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
import lombok.NonNull;
9+
10+
@Data
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
public class License {
14+
private @NonNull String name;
15+
private @NonNull URI uri;
16+
}

src/main/java/com/researchspace/dataverse/http/DataverseOperationsImplV1.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.net.URI;
3434
import java.net.URISyntaxException;
3535
import java.util.List;
36+
import java.util.Map;
3637

3738
import static org.apache.commons.lang3.StringUtils.isEmpty;
3839
import static org.apache.commons.lang3.Validate.isTrue;
@@ -412,5 +413,18 @@ public DataverseResponse<Object> setDatasetPublishPopupCustomText(String text) {
412413
ResponseEntity<DataverseResponse<Object>> resp = template.exchange(url, HttpMethod.PUT, entity, type);
413414
log.debug(resp.getBody().toString());
414415
return resp.getBody();
415-
}
416+
}
417+
418+
@Override
419+
public DataverseResponse<List<Map<String, String>>> getDataverseMetadataLanguage(String alias) {
420+
String url = createV1Url("dataverses", alias, "allowedMetadataLanguages");
421+
HttpEntity<String> entity = createHttpEntity("");
422+
ParameterizedTypeReference<DataverseResponse<List<Map<String, String>>>> type = new ParameterizedTypeReference<DataverseResponse<List<Map<String, String>>>>() {
423+
};
424+
ResponseEntity<DataverseResponse<List<Map<String, String>>>> resp = template.exchange(url, HttpMethod.GET,
425+
entity, type);
426+
log.debug(resp.getBody().toString());
427+
return resp.getBody();
428+
429+
}
416430
}

0 commit comments

Comments
 (0)