Skip to content

Commit 865b981

Browse files
committed
refactor to use metadata request
1 parent 189cae5 commit 865b981

6 files changed

Lines changed: 32 additions & 12 deletions

File tree

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.io.File;
1515
import java.io.IOException;
1616
import java.net.URISyntaxException;
17+
import java.util.Arrays;
1718
import java.util.List;
1819

1920
import static com.researchspace.dataverse.entities.facade.DatasetTestFactory.createFacade;
@@ -66,7 +67,9 @@ public void uploadFileToDataSetWithNativeApi() throws IOException, URISyntaxExce
6667
DatasetFacade facade = createFacade();
6768
Identifier datasetId = dataverseOps.createDataset(facade, dataverseAlias);
6869
assertNotNull(datasetId.getId());
69-
DatasetFileList datasetFileList = datasetOps.uploadNativeFile(datasetId, new byte[]{1, 2, 3, 4, 5}, "myFileName.dat");
70+
FileUploadMetadata meta = FileUploadMetadata.builder().description("My description.").categories(Arrays.asList(new String[]{"Data"}))
71+
.directoryLabel("test/x").build();
72+
DatasetFileList datasetFileList = datasetOps.uploadNativeFile(meta, datasetId, new byte[]{1, 2, 3, 4, 5}, "myFileName.dat");
7073
assertNotNull(datasetFileList);
7174
assertEquals(1, datasetFileList.getFiles().size());
7275
assertTrue(datasetFileList.getFiles().get(0).getCategories().contains("Data"));

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

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

66
import com.researchspace.dataverse.entities.*;
77
import com.researchspace.dataverse.entities.facade.DatasetFacade;
8+
import com.researchspace.dataverse.http.FileUploadMetadata;
89

910
import java.io.File;
1011
import java.io.InputStream;
@@ -56,7 +57,7 @@ public interface DatasetOperations {
5657
*/
5758
List<DatasetVersion> getDatasetVersions(Identifier dsIdentifier);
5859

59-
DatasetFileList uploadNativeFile(Identifier dsIdentifier, byte[] data, String fileName);
60+
DatasetFileList uploadNativeFile(FileUploadMetadata metadata, Identifier dsIdentifier, byte[] data, String fileName);
6061

6162
/**
6263
* Uploads a file to a dataset

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,11 @@ public List<DatasetVersion> getDatasetVersions (Identifier dsIdentifier) {
192192
}
193193

194194
@Override
195-
public DatasetFileList uploadNativeFile(Identifier dsIdentifier, byte[] data, String fileName){
195+
public DatasetFileList uploadNativeFile( FileUploadMetadata metadata, Identifier dsIdentifier, byte[] data, String fileName){
196196
String url = createV1Url("datasets", ":persistentId", "add") + "?persistentId=" + dsIdentifier.getPersistentId();
197197
ParameterizedTypeReference<DataverseResponse<DatasetFileList>> type =
198198
new ParameterizedTypeReference<DataverseResponse<DatasetFileList>>() {};
199-
HttpEntity<MultiValueMap<String, Object>> entity = new NativeFileUploader().uploadFile(apiKey, data, fileName);
199+
HttpEntity<MultiValueMap<String, Object>> entity = new NativeFileUploader().uploadFile(metadata, apiKey, data, fileName);
200200
ResponseEntity<DataverseResponse<DatasetFileList>> resp = template.exchange(url, HttpMethod.POST, entity, type);
201201
log.debug("{}", resp.getBody());
202202
handleError(resp);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.researchspace.dataverse.http;
2+
3+
import lombok.Builder;
4+
import lombok.Data;
5+
6+
import java.util.List;
7+
8+
/**
9+
* Request object for metadata included with native file upload to an existing dataset
10+
*/
11+
@Data
12+
@Builder
13+
14+
public class FileUploadMetadata {
15+
private String description;
16+
private String directoryLabel;
17+
private List<String> categories;
18+
private boolean restrict;
19+
private boolean tabIngest;
20+
21+
}

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public class NativeFileUploader {
1010

11-
public HttpEntity<MultiValueMap<String, Object>> uploadFile(String apiKey, byte [] data, String fName){
11+
public HttpEntity<MultiValueMap<String, Object>> uploadFile(FileUploadMetadata metadata, String apiKey, byte[] data, String fName){
1212
RestTemplate restTemplate = new RestTemplate();
1313
MultiValueMap<String,Object> multipartRequest = new LinkedMultiValueMap<>();
1414

@@ -28,17 +28,12 @@ public String getFilename(){
2828

2929
multipartRequest.set("file",attachmentPart);
3030

31-
3231
HttpHeaders requestHeadersJSON = new HttpHeaders();
33-
3432
requestHeadersJSON.setContentType(MediaType.APPLICATION_JSON);
35-
String requestBody = "{\"description\":\"My description.\",\"directoryLabel\":\"data/subdir1\",\"categories\":[\"Data\"], \"restrict\":\"false\", \"tabIngest\":\"false\"}";
36-
HttpEntity<String> requestEntityJSON = new HttpEntity<>(requestBody, requestHeadersJSON);
37-
33+
HttpEntity<FileUploadMetadata> requestEntityJSON = new HttpEntity<>(metadata, requestHeadersJSON);
3834
multipartRequest.set("jsonData",requestEntityJSON);
3935

4036
HttpEntity<MultiValueMap<String,Object>> requestEntity = new HttpEntity<>(multipartRequest,requestHeaders);//final request
41-
4237
return requestEntity;
4338

4439
}

src/test/java/com/researchspace/dataverse/http/DatasetFilePostMockServerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void testNativeFilePost() throws MalformedURLException {
6363
tss.configure(cfg);
6464
Identifier id = new Identifier();
6565
id.setId(1234L);
66-
DatasetFileList resp = tss.uploadNativeFile(id, null, null);
66+
DatasetFileList resp = tss.uploadNativeFile( FileUploadMetadata.builder().build(), id, null, null);
6767
assertNotNull(resp.getFiles());
6868
assertEquals(1, resp.getFiles().size());
6969
}

0 commit comments

Comments
 (0)