Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 31 additions & 7 deletions src/main/java/edu/harvard/iq/dataverse/util/bagit/OREMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,32 @@ public JsonObjectBuilder getOREMapBuilder(boolean aggregationOnly) throws Except
} else {
addIfNotNull(aggRes, JsonLDTerm.schemaOrg("description"), df.getDescription());
}
addIfNotNull(aggRes, JsonLDTerm.schemaOrg("name"), fmd.getLabel()); // "label" is the filename
String fileName = fmd.getLabel();// "label" is the filename
long fileSize = df.getFilesize();
String mimeType = df.getContentType();
String currentIngestedName = null;
boolean ingested=df.getOriginalFileName()!= null || df.getOriginalFileSize()!=null || df.getOriginalFileFormat()!=null;
if(ingested) {
if(df.getOriginalFileName()!=null) {
currentIngestedName= fileName;
fileName = df.getOriginalFileName();
} else {
logger.warning("Missing Original file name for id: " + df.getId());
}
if(df.getOriginalFileSize()!=null) {
fileSize = df.getOriginalFileSize();
} else {
logger.warning("Missing Original file size for id: " + df.getId());
}
if(df.getOriginalFileFormat()!=null) {
mimeType = df.getOriginalFileFormat();
} else {
logger.warning("Missing Original file format for id: " + df.getId());
}


}
addIfNotNull(aggRes, JsonLDTerm.schemaOrg("name"), fileName);
addIfNotNull(aggRes, JsonLDTerm.restricted, fmd.isRestricted());
addIfNotNull(aggRes, JsonLDTerm.directoryLabel, fmd.getDirectoryLabel());
addIfNotNull(aggRes, JsonLDTerm.schemaOrg("version"), fmd.getVersion());
Expand All @@ -189,21 +214,20 @@ public JsonObjectBuilder getOREMapBuilder(boolean aggregationOnly) throws Except
if (df.getGlobalId().asString().length() != 0) {
fileId = df.getGlobalId().asString();
fileSameAs = SystemConfig.getDataverseSiteUrlStatic()
+ "/api/access/datafile/:persistentId?persistentId=" + fileId;
+ "/api/access/datafile/:persistentId?persistentId=" + fileId + (ingested ? "&format=original":"");
} else {
fileId = SystemConfig.getDataverseSiteUrlStatic() + "/file.xhtml?fileId=" + df.getId();
fileSameAs = SystemConfig.getDataverseSiteUrlStatic() + "/api/access/datafile/" + df.getId();
fileSameAs = SystemConfig.getDataverseSiteUrlStatic() + "/api/access/datafile/" + df.getId() + (ingested ? "?format=original":"");
}
aggRes.add("@id", fileId);
aggRes.add(JsonLDTerm.schemaOrg("sameAs").getLabel(), fileSameAs);
fileArray.add(fileId);

aggRes.add("@type", JsonLDTerm.ore("AggregatedResource").getLabel());
addIfNotNull(aggRes, JsonLDTerm.schemaOrg("fileFormat"), df.getContentType());
addIfNotNull(aggRes, JsonLDTerm.filesize, df.getFilesize());
addIfNotNull(aggRes, JsonLDTerm.schemaOrg("fileFormat"), mimeType);
addIfNotNull(aggRes, JsonLDTerm.filesize, fileSize);
addIfNotNull(aggRes, JsonLDTerm.storageIdentifier, df.getStorageIdentifier());
addIfNotNull(aggRes, JsonLDTerm.originalFileFormat, df.getOriginalFileFormat());
addIfNotNull(aggRes, JsonLDTerm.originalFormatLabel, df.getOriginalFormatLabel());
addIfNotNull(aggRes, JsonLDTerm.currentIngestedName, currentIngestedName);
addIfNotNull(aggRes, JsonLDTerm.UNF, df.getUnf());
addIfNotNull(aggRes, JsonLDTerm.rootDataFileId, df.getRootDataFileId());
addIfNotNull(aggRes, JsonLDTerm.previousDataFileId, df.getPreviousDataFileId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@ public class JsonLDTerm {
public static JsonLDTerm categories = JsonLDTerm.DVCore("categories");
public static JsonLDTerm filesize = JsonLDTerm.DVCore("filesize");
public static JsonLDTerm storageIdentifier = JsonLDTerm.DVCore("storageIdentifier");
@Deprecated
public static JsonLDTerm originalFileFormat = JsonLDTerm.DVCore("originalFileFormat");
@Deprecated
public static JsonLDTerm originalFormatLabel = JsonLDTerm.DVCore("originalFormatLabel");
public static JsonLDTerm currentIngestedName= JsonLDTerm.DVCore("currentIngestedName");
public static JsonLDTerm UNF = JsonLDTerm.DVCore("UNF");
public static JsonLDTerm rootDataFileId = JsonLDTerm.DVCore("rootDataFileId");
public static JsonLDTerm previousDataFileId = JsonLDTerm.DVCore("previousDataFileId");
Expand Down
78 changes: 78 additions & 0 deletions src/test/java/edu/harvard/iq/dataverse/api/BagIT.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package edu.harvard.iq.dataverse.api;

import com.jayway.restassured.RestAssured;
import com.jayway.restassured.response.Response;
import edu.harvard.iq.dataverse.engine.command.impl.LocalSubmitToArchiveCommand;
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
import static javax.ws.rs.core.Response.Status.CREATED;
import static javax.ws.rs.core.Response.Status.OK;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class BagIT {

@BeforeClass
public static void setUpClass() {

RestAssured.baseURI = UtilIT.getRestAssuredBaseUri();

Response setArchiverClassName = UtilIT.setSetting(SettingsServiceBean.Key.ArchiverClassName, LocalSubmitToArchiveCommand.class.getCanonicalName());
setArchiverClassName.then().assertThat()
.statusCode(OK.getStatusCode());

Response setArchiverSettings = UtilIT.setSetting(SettingsServiceBean.Key.ArchiverSettings, ":BagItLocalPath, :BagGeneratorThreads");
setArchiverSettings.then().assertThat()
.statusCode(OK.getStatusCode());

Response setBagItLocalPath = UtilIT.setSetting(":BagItLocalPath", "/tmp");
setBagItLocalPath.then().assertThat()
.statusCode(OK.getStatusCode());

}

@Test
public void testBagItExport() {

Response createUser = UtilIT.createRandomUser();
createUser.then().assertThat().statusCode(OK.getStatusCode());
String username = UtilIT.getUsernameFromResponse(createUser);
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
Response toggleSuperuser = UtilIT.makeSuperUser(username);
toggleSuperuser.then().assertThat()
.statusCode(OK.getStatusCode());

Response createDataverse = UtilIT.createRandomDataverse(apiToken);
createDataverse.then().assertThat().statusCode(CREATED.getStatusCode());
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse);
Integer dataverseId = UtilIT.getDataverseIdFromResponse(createDataverse);

Response createDataset = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiToken);
createDataset.prettyPrint();
createDataset.then().assertThat()
.statusCode(CREATED.getStatusCode());

String datasetPid = UtilIT.getDatasetPersistentIdFromResponse(createDataset);

Response publishDataverse = UtilIT.publishDataverseViaNativeApi(dataverseAlias, apiToken);
publishDataverse.then().assertThat().statusCode(OK.getStatusCode());
Response publishDataset = UtilIT.publishDatasetViaNativeApi(datasetPid, "major", apiToken);
publishDataset.then().assertThat().statusCode(OK.getStatusCode());

Response archiveDataset = UtilIT.archiveDataset(datasetPid, "1.0", apiToken);
archiveDataset.prettyPrint();
archiveDataset.then().assertThat().statusCode(OK.getStatusCode());

}

@AfterClass
public static void tearDownClass() {

// Not checking if delete happened. Hopefully, it did.
UtilIT.deleteSetting(SettingsServiceBean.Key.ArchiverClassName);
UtilIT.deleteSetting(SettingsServiceBean.Key.ArchiverSettings);
UtilIT.deleteSetting(":BagItLocalPath");

}

}
30 changes: 30 additions & 0 deletions src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -1879,6 +1879,14 @@ static Response deleteSetting(SettingsServiceBean.Key settingKey) {
return response;
}

/**
* @param settingKey Include the colon like :BagItLocalPath
*/
static Response deleteSetting(String settingKey) {
Response response = given().when().delete("/api/admin/settings/" + settingKey);
return response;
}

static Response getSetting(SettingsServiceBean.Key settingKey) {
Response response = given().when().get("/api/admin/settings/" + settingKey);
return response;
Expand All @@ -1889,6 +1897,14 @@ static Response setSetting(SettingsServiceBean.Key settingKey, String value) {
return response;
}

/**
* @param settingKey Include the colon like :BagItLocalPath
*/
public static Response setSetting(String settingKey, String value) {
Response response = given().body(value).when().put("/api/admin/settings/" + settingKey);
return response;
}

static Response getRoleAssignmentsOnDataverse(String dataverseAliasOrId, String apiToken) {
String url = "/api/dataverses/" + dataverseAliasOrId + "/assignments";
return given()
Expand Down Expand Up @@ -2927,6 +2943,20 @@ static Response getDatasetVersionArchivalStatus(Integer datasetId, String versio
.get("/api/datasets/" + datasetId + "/" + version + "/archivalStatus");
return response;
}

static Response archiveDataset(String idOrPersistentIdOfDataset, String version, String apiToken) {
String idInPath = idOrPersistentIdOfDataset;
String optionalQueryParam = "";
if (!NumberUtils.isNumber(idOrPersistentIdOfDataset)) {
idInPath = ":persistentId";
optionalQueryParam = "?persistentId=" + idOrPersistentIdOfDataset;
}
Response response = given()
.header(API_TOKEN_HTTP_HEADER, apiToken)
.post("/api/admin/submitDatasetVersionToArchive/" + idInPath + "/" + version + optionalQueryParam);
return response;
}

static Response setDatasetVersionArchivalStatus(Integer datasetId, String version, String apiToken, String status, String message) {
Response response = given()
.header(API_TOKEN_HTTP_HEADER, apiToken).contentType("application/json; charset=utf-8").body("{\"status\":\"" + status + "\", \"message\":\"" + message + "\"}")
Expand Down
2 changes: 1 addition & 1 deletion tests/integration-tests.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
DataversesIT,DatasetsIT,SwordIT,AdminIT,BuiltinUsersIT,UsersIT,UtilIT,ConfirmEmailIT,FileMetadataIT,FilesIT,SearchIT,InReviewWorkflowIT,HarvestingServerIT,MoveIT,MakeDataCountApiIT,FileTypeDetectionIT,EditDDIIT,ExternalToolsIT,AccessIT,DuplicateFilesIT,DownloadFilesIT,LinkIT,DeleteUsersIT,DeactivateUsersIT,AuxiliaryFilesIT,InvalidCharactersIT,LicensesIT,NotificationsIT
DataversesIT,DatasetsIT,SwordIT,AdminIT,BuiltinUsersIT,UsersIT,UtilIT,ConfirmEmailIT,FileMetadataIT,FilesIT,SearchIT,InReviewWorkflowIT,HarvestingServerIT,MoveIT,MakeDataCountApiIT,FileTypeDetectionIT,EditDDIIT,ExternalToolsIT,AccessIT,DuplicateFilesIT,DownloadFilesIT,LinkIT,DeleteUsersIT,DeactivateUsersIT,AuxiliaryFilesIT,InvalidCharactersIT,LicensesIT,NotificationsIT,BagIT