forked from IQSS/dataverse
-
Notifications
You must be signed in to change notification settings - Fork 1
/
DataCaptureModuleUtil.java
83 lines (73 loc) · 3.26 KB
/
DataCaptureModuleUtil.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package edu.harvard.iq.dataverse.datacapturemodule;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import edu.harvard.iq.dataverse.Dataset;
import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser;
import edu.harvard.iq.dataverse.util.config.SystemConfig;
import java.util.Arrays;
import java.util.logging.Logger;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
public class DataCaptureModuleUtil {
private static final Logger logger = Logger.getLogger(DataCaptureModuleUtil.class.getCanonicalName());
public static boolean rsyncSupportEnabled(String uploadMethodsSettings) {
logger.fine("uploadMethodsSettings: " + uploadMethodsSettings);;
if (uploadMethodsSettings==null){
return false;
} else {
return Arrays.asList(uploadMethodsSettings.toLowerCase().split("\\s*,\\s*")).contains(SystemConfig.FileUploadMethods.RSYNC.toString());
}
}
/**
* generate JSON to send to DCM
*/
public static JsonObject generateJsonForUploadRequest(AuthenticatedUser user, Dataset dataset) {
JsonObjectBuilder jab = Json.createObjectBuilder();
// The general rule should be to always pass the user id and dataset identifier to the DCM.
jab.add("userId", user.getId());
jab.add("datasetIdentifier", dataset.getIdentifier());
return jab.build();
}
/**
* transfer script from DCM
*/
public static ScriptRequestResponse getScriptFromRequest(HttpResponse<JsonNode> uploadRequest) {
int status = uploadRequest.getStatus();
JsonNode body = uploadRequest.getBody();
logger.fine("Got " + status + " with body: " + body);
if (status == 404) {
return new ScriptRequestResponse(status);
}
int httpStatusCode = uploadRequest.getStatus();
String script = body.getObject().getString("script");
String datasetIdentifier = body.getObject().getString("datasetIdentifier");
long userId = body.getObject().getLong("userId");
ScriptRequestResponse scriptRequestResponse = new ScriptRequestResponse(httpStatusCode, datasetIdentifier, userId, script);
return scriptRequestResponse;
}
static UploadRequestResponse makeUploadRequest(HttpResponse<String> uploadRequest) {
int status = uploadRequest.getStatus();
String body = uploadRequest.getBody();
logger.fine("Got " + status + " with body: " + body);
return new UploadRequestResponse(uploadRequest.getStatus(), body);
}
public static String getMessageFromException(DataCaptureModuleException ex) {
if (ex == null) {
return "DataCaptureModuleException was null!";
}
Throwable cause = ex.getCause();
if (cause == null) {
return ex.toString();
}
String message = ex.getMessage();
if (message == null) {
return cause.toString();
}
return message + " was caused by " + cause.getMessage();
}
public static String getScriptName(DatasetVersion datasetVersion) {
return "upload-" + datasetVersion.getDataset().getIdentifier().replace("/", "_") + ".bash";
}
}