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 setDatasetPublishPopupCustomText(String text) {
 		ResponseEntity> resp = template.exchange(url, HttpMethod.PUT, entity, type);
 		log.debug(resp.getBody().toString());
 		return resp.getBody();
-	}	
+	}
+	
+	@Override
+	public DataverseResponse>> getDataverseMetadataLanguage(String alias) {
+		String url = createV1Url("dataverses", alias, "allowedMetadataLanguages");
+		HttpEntity entity = createHttpEntity("");
+		ParameterizedTypeReference>>> type = new ParameterizedTypeReference>>>() {
+		};
+		ResponseEntity>>> resp = template.exchange(url, HttpMethod.GET,
+				entity, type);
+		log.debug(resp.getBody().toString());
+		return resp.getBody();
+
+	}
 }