diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetVersionDifference.java b/src/main/java/edu/harvard/iq/dataverse/DatasetVersionDifference.java index 5805359feb0..5760aa2c5b5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetVersionDifference.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetVersionDifference.java @@ -1843,7 +1843,7 @@ public JsonObjectBuilder compareVersionsAsJson() { job.add("oldVersion", jobVersion); jobVersion = new NullSafeJsonBuilder(); jobVersion.add("versionNumber", newVersion.getFriendlyVersionNumber()); - jobVersion.add("createdDate", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(newVersion.getCreateTime())); + jobVersion.add("lastUpdatedDate", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(newVersion.getLastUpdateTime())); job.add("newVersion", jobVersion); if (!this.detailDataByBlock.isEmpty()) { @@ -1942,13 +1942,18 @@ public JsonObjectBuilder compareVersionsAsJson() { private JsonObjectBuilder filesDiffJson(FileMetadata fileMetadata) { NullSafeJsonBuilder job = new NullSafeJsonBuilder(); DataFile df = fileMetadata.getDataFile(); - List tags = df.getTags(); job.add("fileName", df.getDisplayName()) + .add("filePath", fileMetadata.getDirectoryLabel()) .add(df.getChecksumType().name(), df.getChecksumValue()) .add("type",df.getContentType()) .add("fileId", df.getId()) - .add("description", df.getDescription()) + .add("description", fileMetadata.getDescription()) .add("isRestricted", df.isRestricted()); + if (fileMetadata.getCategories() != null && !fileMetadata.getCategories().isEmpty()) { + JsonArrayBuilder jabCategories = Json.createArrayBuilder(); + fileMetadata.getCategories().forEach(c -> jabCategories.add(c.getName())); + job.add("categories", jabCategories); + } if (df.getTags() != null && !df.getTags().isEmpty()) { JsonArrayBuilder jabTags = Json.createArrayBuilder(); df.getTags().forEach(t -> jabTags.add(t.getTypeLabel())); diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonParser.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonParser.java index 2f01c9bc2f2..65dd2986a86 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonParser.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonParser.java @@ -965,7 +965,6 @@ public void parseControlledVocabularyValue(DatasetField dsf, DatasetFieldType cv if (cvv == null) { if (allowHarvestingMissingCVV) { // we need to process this as a primitive value - logger.warning(">>>> Value '" + strValue + "' does not exist in type '" + cvvType.getName() + "'. Processing as primitive per setting override."); parsePrimitiveValue(dsf, cvvType , json); return; } else { diff --git a/src/test/java/edu/harvard/iq/dataverse/DatasetVersionDifferenceTest.java b/src/test/java/edu/harvard/iq/dataverse/DatasetVersionDifferenceTest.java index f65f510090e..138ef709d18 100644 --- a/src/test/java/edu/harvard/iq/dataverse/DatasetVersionDifferenceTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/DatasetVersionDifferenceTest.java @@ -113,6 +113,8 @@ private FileMetadata initFile(DatasetVersion dsv, Long prevId) { fm.setId(id); fm.setDataFile(df); fm.setLabel("Label"+id); + fm.setDirectoryLabel("/myFilePath/"); + fm.setDescription("Desc"+id); dsv.getFileMetadatas().add(fm); return fm; } diff --git a/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java b/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java index bf292723ba5..61977f6446c 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java @@ -5190,20 +5190,28 @@ public void testCompareDatasetVersionsAPI() throws InterruptedException { String authority = JsonPath.from(getDatasetJsonBeforePublishing.getBody().asString()).getString("data.authority"); String identifier = JsonPath.from(getDatasetJsonBeforePublishing.getBody().asString()).getString("data.identifier"); String datasetPersistentId = protocol + ":" + authority + "/" + identifier; - + // used for all added files + JsonObjectBuilder json = Json.createObjectBuilder() + .add("description", "my description") + .add("directoryLabel", "/data/subdir1/") + .add("categories", Json.createArrayBuilder() + .add("Data") + ); + JsonObject jsonObj = json.build(); String pathToFile = "src/main/webapp/resources/images/dataverse-icon-1200.png"; - Response uploadResponse = UtilIT.uploadFileViaNative(String.valueOf(datasetId), pathToFile, apiToken); + Response uploadResponse = UtilIT.uploadFileViaNative(String.valueOf(datasetId), pathToFile, jsonObj, apiToken); + uploadResponse.prettyPrint(); uploadResponse.then().assertThat() .statusCode(OK.getStatusCode()); Integer modifyFileId = UtilIT.getDataFileIdFromResponse(uploadResponse); pathToFile = "src/main/webapp/resources/images/dataverseproject_logo.jpg"; - uploadResponse = UtilIT.uploadFileViaNative(String.valueOf(datasetId), pathToFile, apiToken); + uploadResponse = UtilIT.uploadFileViaNative(String.valueOf(datasetId), pathToFile, jsonObj, apiToken); uploadResponse.then().assertThat() .statusCode(OK.getStatusCode()); Integer deleteFileId = UtilIT.getDataFileIdFromResponse(uploadResponse); pathToFile = "src/main/webapp/resources/images/fav/favicon-16x16.png"; - uploadResponse = UtilIT.uploadFileViaNative(String.valueOf(datasetId), pathToFile, apiToken); + uploadResponse = UtilIT.uploadFileViaNative(String.valueOf(datasetId), pathToFile, jsonObj, apiToken); uploadResponse.then().assertThat() .statusCode(OK.getStatusCode()); Integer replaceFileId = UtilIT.getDataFileIdFromResponse(uploadResponse); @@ -5221,7 +5229,7 @@ public void testCompareDatasetVersionsAPI() throws InterruptedException { // Test adding a file pathToFile = "src/test/resources/tab/test.tab"; - Response uploadTabularFileResponse = UtilIT.uploadFileViaNative(Integer.toString(datasetId), pathToFile, Json.createObjectBuilder().build(), apiToken); + Response uploadTabularFileResponse = UtilIT.uploadFileViaNative(Integer.toString(datasetId), pathToFile, jsonObj, apiToken); uploadTabularFileResponse.prettyPrint(); uploadTabularFileResponse.then().assertThat() .statusCode(OK.getStatusCode()); @@ -5243,7 +5251,7 @@ public void testCompareDatasetVersionsAPI() throws InterruptedException { .statusCode(NO_CONTENT.getStatusCode()); // Test Replacing a file - Response replaceResponse = UtilIT.replaceFile(String.valueOf(replaceFileId), "src/main/webapp/resources/images/fav/favicon-32x32.png", apiToken); + Response replaceResponse = UtilIT.replaceFile(String.valueOf(replaceFileId), "src/main/webapp/resources/images/fav/favicon-32x32.png", jsonObj, apiToken); replaceResponse.prettyPrint(); replaceResponse.then().assertThat() .statusCode(OK.getStatusCode()); @@ -5273,6 +5281,8 @@ public void testCompareDatasetVersionsAPI() throws InterruptedException { .body("data.metadataChanges[1].changed[0].oldValue", CoreMatchers.containsString("")) .body("data.metadataChanges[1].changed[0].newValue", CoreMatchers.containsString("Parallel Group Design; Nested Case Control Design")) .body("data.filesAdded[0].fileName", CoreMatchers.equalTo("test.tab")) + .body("data.filesAdded[0].filePath", CoreMatchers.equalTo("data/subdir1")) + .body("data.filesAdded[0].description", CoreMatchers.equalTo("my description")) .body("data.filesAdded[0].tags[0]", CoreMatchers.equalTo("Survey")) .body("data.filesRemoved[0].fileName", CoreMatchers.equalTo("dataverseproject_logo.jpg")) .body("data.fileChanges[0].fileName", CoreMatchers.equalTo("dataverse-icon-1200.png"))