diff --git a/src/integration-test/java/com/researchspace/dataverse/http/DatasetOperationsTest.java b/src/integration-test/java/com/researchspace/dataverse/http/DatasetOperationsTest.java index 80d69b7..981747d 100644 --- a/src/integration-test/java/com/researchspace/dataverse/http/DatasetOperationsTest.java +++ b/src/integration-test/java/com/researchspace/dataverse/http/DatasetOperationsTest.java @@ -5,6 +5,8 @@ import com.researchspace.dataverse.entities.*; import com.researchspace.dataverse.entities.facade.DatasetFacade; +import com.researchspace.dataverse.entities.facade.License; + import org.apache.commons.io.FileUtils; import org.apache.commons.lang.RandomStringUtils; import org.junit.Before; @@ -15,6 +17,7 @@ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays; import java.util.List; @@ -161,6 +164,15 @@ public void testUploadFile() { datasetOps.uploadFile(ds.getDoiId().get(), getTestFile(), ds.getProtocol()); } + @Test + public void testCreateDatasetWithLicense() throws URISyntaxException { + DatasetFacade facade = createFacadeWithMetadataLanguage(); + facade.setLicense(new License("CC0 1.0", new URI("http://creativecommons.org/publicdomain/zero/1.0"))); + Identifier datasetId = dataverseOps.createDataset(facade, dataverseAlias); + Dataset ds = datasetOps.getDataset(datasetId); + assertEquals("CC0 1.0", ds.getLatestVersion().getLicense().getName()); + } + private File getTestFile() { return new File("src/integration-test/resources/ResizablePng.zip"); } diff --git a/src/integration-test/java/com/researchspace/dataverse/http/DataverseOperationsTest.java b/src/integration-test/java/com/researchspace/dataverse/http/DataverseOperationsTest.java index 64e7e52..e67ece8 100644 --- a/src/integration-test/java/com/researchspace/dataverse/http/DataverseOperationsTest.java +++ b/src/integration-test/java/com/researchspace/dataverse/http/DataverseOperationsTest.java @@ -11,6 +11,8 @@ import org.junit.Test; import java.util.Arrays; +import java.util.List; +import java.util.Map; import static org.junit.Assert.*; /**
@@ -93,4 +95,12 @@ public void testGetDataverseById() {
assertNotNull(dv.getId());
assertTrue(dv.getContactEmails().size() > 0);
}
+
+ @Test
+ public void testGetDatasetMetadataLanguage() {
+ // only works if dataverseAlias belongs to a dataverse collection with enlish as its metadatalanguage
+ DataverseResponse>> langMap = dataverseOps
+ .getDataverseMetadataLanguage(dataverseAlias);
+ assertEquals("en", langMap.getData().get(0).get("locale"));
+ }
}
diff --git a/src/main/java/com/researchspace/dataverse/api/v1/DataverseConfig.java b/src/main/java/com/researchspace/dataverse/api/v1/DataverseConfig.java
index 357116e..4d7098b 100644
--- a/src/main/java/com/researchspace/dataverse/api/v1/DataverseConfig.java
+++ b/src/main/java/com/researchspace/dataverse/api/v1/DataverseConfig.java
@@ -8,6 +8,7 @@
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
+import lombok.NoArgsConstructor;
import lombok.ToString;
/**
@@ -32,6 +33,7 @@
@EqualsAndHashCode(of={"serverURL"})
@AllArgsConstructor
@ToString()
+@NoArgsConstructor
public class DataverseConfig {
private @Getter URL serverURL;
diff --git a/src/main/java/com/researchspace/dataverse/api/v1/DataverseOperations.java b/src/main/java/com/researchspace/dataverse/api/v1/DataverseOperations.java
index 6c4a31d..fb21d37 100644
--- a/src/main/java/com/researchspace/dataverse/api/v1/DataverseOperations.java
+++ b/src/main/java/com/researchspace/dataverse/api/v1/DataverseOperations.java
@@ -5,6 +5,7 @@
import java.io.IOException;
import java.util.List;
+import java.util.Map;
import com.researchspace.dataverse.entities.DataversePost;
import com.researchspace.dataverse.entities.DataverseGet;
@@ -87,4 +88,6 @@ public interface DataverseOperations {
*/
DataverseResponse publishDataverse(String dataverseAlias);
+ DataverseResponse>> getDataverseMetadataLanguage(String alias);
+
}
diff --git a/src/main/java/com/researchspace/dataverse/entities/DatasetVersion.java b/src/main/java/com/researchspace/dataverse/entities/DatasetVersion.java
index dc3acfc..44be764 100644
--- a/src/main/java/com/researchspace/dataverse/entities/DatasetVersion.java
+++ b/src/main/java/com/researchspace/dataverse/entities/DatasetVersion.java
@@ -5,6 +5,8 @@
import java.util.Date;
+import com.researchspace.dataverse.entities.facade.License;
+
import lombok.Data;
/**
Copyright 2016 ResearchSpace
@@ -31,5 +33,5 @@ public class DatasetVersion {
private Date createTime;
private DataSetMetadataBlock metadataBlocks;
private int versionNumber, versionMinorNumber;
-
+ private License license;
}
diff --git a/src/main/java/com/researchspace/dataverse/entities/facade/DatasetBuilder.java b/src/main/java/com/researchspace/dataverse/entities/facade/DatasetBuilder.java
index b3b6524..492381d 100644
--- a/src/main/java/com/researchspace/dataverse/entities/facade/DatasetBuilder.java
+++ b/src/main/java/com/researchspace/dataverse/entities/facade/DatasetBuilder.java
@@ -82,6 +82,10 @@ public Dataset build(DatasetFacade facade) {
dv.setMetadataBlocks(blocks);
blocks.setCitation(citation);
citation.setFields(fields);
+ License license = facade.getLicense();
+ if (license != null) {
+ dv.setLicense(license);
+ }
Dataset toSubmit = new Dataset();
toSubmit.setDatasetVersion(dv);
String metadataLanguage = facade.getMetadataLanguage();
diff --git a/src/main/java/com/researchspace/dataverse/entities/facade/DatasetFacade.java b/src/main/java/com/researchspace/dataverse/entities/facade/DatasetFacade.java
index bb7f0ce..faae9e6 100644
--- a/src/main/java/com/researchspace/dataverse/entities/facade/DatasetFacade.java
+++ b/src/main/java/com/researchspace/dataverse/entities/facade/DatasetFacade.java
@@ -51,7 +51,8 @@ public class DatasetFacade {
private String productionPlace;
private @Singular List contributors;
private String metadataLanguage;
-
+ private License license;
+
/**
* Returns a copy if the internally stored Date
* @return
diff --git a/src/main/java/com/researchspace/dataverse/entities/facade/License.java b/src/main/java/com/researchspace/dataverse/entities/facade/License.java
new file mode 100644
index 0000000..a64209b
--- /dev/null
+++ b/src/main/java/com/researchspace/dataverse/entities/facade/License.java
@@ -0,0 +1,16 @@
+package com.researchspace.dataverse.entities.facade;
+
+import java.net.URI;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class License {
+ private @NonNull String name;
+ private @NonNull URI uri;
+}
diff --git a/src/main/java/com/researchspace/dataverse/http/DataverseOperationsImplV1.java b/src/main/java/com/researchspace/dataverse/http/DataverseOperationsImplV1.java
index 6f0f53f..47a9011 100644
--- a/src/main/java/com/researchspace/dataverse/http/DataverseOperationsImplV1.java
+++ b/src/main/java/com/researchspace/dataverse/http/DataverseOperationsImplV1.java
@@ -33,6 +33,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
+import java.util.Map;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.apache.commons.lang3.Validate.isTrue;
@@ -412,5 +413,18 @@ public DataverseResponse