Enhancement on Project Activity #11690
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/Common/workspace-task-executor-library@167293 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
6a5ee65cd9
commit
caa1debb49
|
@ -17,10 +17,10 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class WorkspaceDataMinerTaskExecute.
|
* The Class WorkspaceDataMinerTaskExecutor.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* Apr 26, 2018
|
* May 2, 2018
|
||||||
*/
|
*/
|
||||||
public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfiguration, TaskExecutionStatus>, ConfigurableTask<TaskConfiguration>, CheckableTask<TaskConfiguration>{
|
public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfiguration, TaskExecutionStatus>, ConfigurableTask<TaskConfiguration>, CheckableTask<TaskConfiguration>{
|
||||||
|
|
||||||
|
@ -29,15 +29,20 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
|
||||||
|
|
||||||
private static WorkspaceDataMinerTaskExecutor INSTANCE = null;
|
private static WorkspaceDataMinerTaskExecutor INSTANCE = null;
|
||||||
|
|
||||||
public static final String WS_TASK_TASK_CONF = "WS-TASK.TASK-CONF";
|
public static final String WS_DM_TASK_TASK_CONF = "WS-DM-TASK.TASK-CONF";
|
||||||
|
|
||||||
private String usernameOwner;
|
private String usernameOwner;
|
||||||
|
|
||||||
private DataMinerAccessPoint dataMinerAP;
|
private DataMinerAccessPoint dataMinerAP;
|
||||||
|
|
||||||
private JsonUtil<TaskConfiguration> jsonUtil = new JsonUtil<TaskConfiguration>();
|
private JsonUtil jsonUtil = new JsonUtil();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the data miner access point.
|
||||||
|
*
|
||||||
|
* @return the data miner access point
|
||||||
|
*/
|
||||||
private DataMinerAccessPoint getDataMinerAccessPoint(){
|
private DataMinerAccessPoint getDataMinerAccessPoint(){
|
||||||
if(dataMinerAP==null)
|
if(dataMinerAP==null)
|
||||||
dataMinerAP = new DataMinerAccessPoint();
|
dataMinerAP = new DataMinerAccessPoint();
|
||||||
|
@ -92,6 +97,7 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
|
||||||
* Validate task configuration.
|
* Validate task configuration.
|
||||||
*
|
*
|
||||||
* @param taskConfiguration the task configuration
|
* @param taskConfiguration the task configuration
|
||||||
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
private static void ValidateTaskConfiguration(TaskConfiguration taskConfiguration) throws Exception {
|
private static void ValidateTaskConfiguration(TaskConfiguration taskConfiguration) throws Exception {
|
||||||
Validate.notNull(taskConfiguration, "The "+TaskConfiguration.class.getSimpleName()+" is null");
|
Validate.notNull(taskConfiguration, "The "+TaskConfiguration.class.getSimpleName()+" is null");
|
||||||
|
@ -108,9 +114,9 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
|
||||||
TaskConfiguration conf = null;
|
TaskConfiguration conf = null;
|
||||||
checkOwner();
|
checkOwner();
|
||||||
WorkspaceItem item = WsUtil.getItem(usernameOwner, workspaceItemId);
|
WorkspaceItem item = WsUtil.getItem(usernameOwner, workspaceItemId);
|
||||||
String propConfigValue = WsUtil.getPropertyValue(item, WS_TASK_TASK_CONF);
|
String propConfigValue = WsUtil.getPropertyValue(item, WS_DM_TASK_TASK_CONF);
|
||||||
|
|
||||||
logger.info("Read "+WS_TASK_TASK_CONF+" value: "+propConfigValue);
|
logger.info("Read "+WS_DM_TASK_TASK_CONF+" value: "+propConfigValue);
|
||||||
|
|
||||||
if(propConfigValue==null || propConfigValue.isEmpty())
|
if(propConfigValue==null || propConfigValue.isEmpty())
|
||||||
throw new ItemNotExecutableException("The item id "+workspaceItemId+" has not a "+TaskConfiguration.class.getSimpleName());
|
throw new ItemNotExecutableException("The item id "+workspaceItemId+" has not a "+TaskConfiguration.class.getSimpleName());
|
||||||
|
@ -135,16 +141,16 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
|
||||||
|
|
||||||
checkOwner();
|
checkOwner();
|
||||||
WorkspaceItem item = WsUtil.getItem(usernameOwner, workspaceItemId);
|
WorkspaceItem item = WsUtil.getItem(usernameOwner, workspaceItemId);
|
||||||
String propConfigValue = WsUtil.getPropertyValue(item, WS_TASK_TASK_CONF);
|
String propConfigValue = WsUtil.getPropertyValue(item, WS_DM_TASK_TASK_CONF);
|
||||||
|
|
||||||
if(propConfigValue==null || propConfigValue.isEmpty()){
|
if(propConfigValue==null || propConfigValue.isEmpty()){
|
||||||
logger.debug("The item: "+workspaceItemId+" has not a configuration "+WS_TASK_TASK_CONF);
|
logger.debug("The item: "+workspaceItemId+" has not a configuration "+WS_DM_TASK_TASK_CONF);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
jsonUtil.readObject(propConfigValue, TaskConfiguration.class);
|
jsonUtil.readObject(propConfigValue, TaskConfiguration.class);
|
||||||
logger.debug("The item: "+workspaceItemId+" has a valid "+WS_TASK_TASK_CONF+" configuration");
|
logger.debug("The item: "+workspaceItemId+" has a valid "+WS_DM_TASK_TASK_CONF+" configuration");
|
||||||
return true;
|
return true;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
logger.error("Error on serializing configuration: "+propConfigValue, e);
|
logger.error("Error on serializing configuration: "+propConfigValue, e);
|
||||||
|
@ -164,13 +170,13 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
|
||||||
checkOwner();
|
checkOwner();
|
||||||
|
|
||||||
WorkspaceItem item = WsUtil.getItem(usernameOwner, taskConfiguration.getWorkspaceItemId());
|
WorkspaceItem item = WsUtil.getItem(usernameOwner, taskConfiguration.getWorkspaceItemId());
|
||||||
String propConfig = WsUtil.getPropertyValue(item, WS_TASK_TASK_CONF);
|
String propConfig = WsUtil.getPropertyValue(item, WS_DM_TASK_TASK_CONF);
|
||||||
|
|
||||||
if(propConfig==null || propConfig.isEmpty())
|
if(propConfig==null || propConfig.isEmpty())
|
||||||
throw new ItemNotExecutableException("The item id "+taskConfiguration.getWorkspaceItemId()+" has not a "+TaskConfiguration.class.getSimpleName());
|
throw new ItemNotExecutableException("The item id "+taskConfiguration.getWorkspaceItemId()+" has not a "+TaskConfiguration.class.getSimpleName());
|
||||||
|
|
||||||
WsUtil.setPropertyValue(item, WS_TASK_TASK_CONF, null);
|
WsUtil.setPropertyValue(item, WS_DM_TASK_TASK_CONF, null);
|
||||||
logger.info("Set property value "+WS_TASK_TASK_CONF+" as null for the workspace item id: "+taskConfiguration.getWorkspaceItemId());
|
logger.info("Set property value "+WS_DM_TASK_TASK_CONF+" as null for the workspace item id: "+taskConfiguration.getWorkspaceItemId());
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -194,7 +200,7 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
if(jsonConfValue!=null){
|
if(jsonConfValue!=null){
|
||||||
WsUtil.setPropertyValue(item, WS_TASK_TASK_CONF, jsonConfValue);
|
WsUtil.setPropertyValue(item, WS_DM_TASK_TASK_CONF, jsonConfValue);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
public interface BaseTaskConfiguration {
|
public interface BaseTaskConfiguration {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the task id.
|
* Gets the task id.
|
||||||
*
|
*
|
||||||
|
@ -46,4 +45,21 @@ public interface BaseTaskConfiguration {
|
||||||
Map<String, String> getMapParameters();
|
Map<String, String> getMapParameters();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the access key to retrieve this configuration from gcube properties saved in the workspace.
|
||||||
|
*
|
||||||
|
* @return the access key
|
||||||
|
*/
|
||||||
|
String getAccessKey();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the access key to save this configuration in the workspace gcube properties.
|
||||||
|
*
|
||||||
|
* @param accessKey the access key
|
||||||
|
*/
|
||||||
|
void setAccessKey(String accessKey);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class TaskConfiguration.
|
* The Class TaskConfiguration.
|
||||||
*
|
*
|
||||||
|
@ -24,42 +25,64 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -3380573762288127547L;
|
private static final long serialVersionUID = -3380573762288127547L;
|
||||||
private String algorithmId;
|
private String taskId;
|
||||||
@JsonIgnoreProperties
|
@JsonIgnoreProperties
|
||||||
private String taskDescription; //optional
|
private String taskDescription; //optional
|
||||||
private String token;
|
private String token;
|
||||||
private String workspaceItemId;
|
private String workspaceItemId;
|
||||||
private Map<String, String> mapParameters;
|
@JsonIgnoreProperties
|
||||||
|
private Map<String, String> mapParameters; //optional
|
||||||
|
@JsonIgnoreProperties
|
||||||
|
private String accessKey;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new run algorithm configuration.
|
* Instantiates a new task configuration.
|
||||||
*/
|
*/
|
||||||
public TaskConfiguration() {
|
public TaskConfiguration() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new task configuration.
|
* @param taskId
|
||||||
*
|
* @param taskDescription
|
||||||
* @param algorithmId the algorithm id
|
* @param token
|
||||||
* @param taskDescription the task description
|
* @param workspaceItemId
|
||||||
* @param token the token
|
* @param mapParameters
|
||||||
* @param workspaceItemId the workspace item id
|
|
||||||
* @param mapParameters the map parameters
|
|
||||||
*/
|
*/
|
||||||
public TaskConfiguration(
|
public TaskConfiguration(
|
||||||
String algorithmId, String taskDescription, String token,
|
String taskId, String taskDescription, String token,
|
||||||
String workspaceItemId, Map<String, String> mapParameters) {
|
String workspaceItemId, Map<String, String> mapParameters) {
|
||||||
|
|
||||||
super();
|
this.taskId = taskId;
|
||||||
this.algorithmId = algorithmId;
|
|
||||||
this.taskDescription = taskDescription;
|
this.taskDescription = taskDescription;
|
||||||
this.token = token;
|
this.token = token;
|
||||||
this.workspaceItemId = workspaceItemId;
|
this.workspaceItemId = workspaceItemId;
|
||||||
this.mapParameters = mapParameters;
|
this.mapParameters = mapParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration#getAccessKey()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getAccessKey() {
|
||||||
|
|
||||||
|
if(accessKey==null)
|
||||||
|
accessKey = hashCode()+"";
|
||||||
|
|
||||||
|
return accessKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration#setAccessKey(java.lang.String)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setAccessKey(String accessKey) {
|
||||||
|
|
||||||
|
this.accessKey = accessKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.gcube.common.workspacetaskexecutor.TaskConfiguration#getTaskId()
|
* @see org.gcube.common.workspacetaskexecutor.TaskConfiguration#getTaskId()
|
||||||
|
@ -67,22 +90,10 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
@Override
|
@Override
|
||||||
public String getTaskId() {
|
public String getTaskId() {
|
||||||
|
|
||||||
return algorithmId;
|
return taskId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the algorithm id.
|
|
||||||
*
|
|
||||||
* @return the algorithmId
|
|
||||||
*/
|
|
||||||
public String getAlgorithmId() {
|
|
||||||
|
|
||||||
return algorithmId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the task description.
|
* Gets the task description.
|
||||||
*
|
*
|
||||||
|
@ -131,17 +142,6 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the algorithm id.
|
|
||||||
*
|
|
||||||
* @param algorithmId the algorithmId to set
|
|
||||||
*/
|
|
||||||
public void setAlgorithmId(String algorithmId) {
|
|
||||||
|
|
||||||
this.algorithmId = algorithmId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the task description.
|
* Sets the task description.
|
||||||
|
@ -154,6 +154,14 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param taskId the taskId to set
|
||||||
|
*/
|
||||||
|
public void setTaskId(String taskId) {
|
||||||
|
|
||||||
|
this.taskId = taskId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the token.
|
* Sets the token.
|
||||||
|
@ -178,7 +186,6 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the map parameters.
|
* Sets the map parameters.
|
||||||
*
|
*
|
||||||
|
@ -190,9 +197,6 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#hashCode()
|
* @see java.lang.Object#hashCode()
|
||||||
*/
|
*/
|
||||||
|
@ -200,9 +204,36 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
|
|
||||||
int hash = 1;
|
int hash = 1;
|
||||||
hash = hash * 13 + (algorithmId == null ? 0 : algorithmId.hashCode());
|
hash = hash * 13 + (taskId == null ? 0 : taskId.hashCode());
|
||||||
hash = hash * 17 + (workspaceItemId == null ? 0 : workspaceItemId.hashCode());
|
hash = hash * 17 + (workspaceItemId == null ? 0 : workspaceItemId.hashCode());
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("TaskConfiguration [taskId=");
|
||||||
|
builder.append(taskId);
|
||||||
|
builder.append(", taskDescription=");
|
||||||
|
builder.append(taskDescription);
|
||||||
|
builder.append(", token=");
|
||||||
|
builder.append(token);
|
||||||
|
builder.append(", workspaceItemId=");
|
||||||
|
builder.append(workspaceItemId);
|
||||||
|
builder.append(", mapParameters=");
|
||||||
|
builder.append(mapParameters);
|
||||||
|
builder.append(", accessKey=");
|
||||||
|
builder.append(accessKey);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,43 +4,58 @@
|
||||||
package org.gcube.common.workspacetaskexecutor.util;
|
package org.gcube.common.workspacetaskexecutor.util;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class JsonUtil.
|
* The Class JsonUtil.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* Apr 26, 2018
|
* May 2, 2018
|
||||||
* @param <T> the generic type
|
|
||||||
*/
|
*/
|
||||||
public class JsonUtil<T> {
|
public class JsonUtil {
|
||||||
|
|
||||||
private ObjectMapper mapper = new ObjectMapper();
|
private ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new json util.
|
||||||
|
*/
|
||||||
|
public JsonUtil() {
|
||||||
|
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To json.
|
* To json.
|
||||||
*
|
*
|
||||||
|
* @param <T> the generic type
|
||||||
* @param obj the obj
|
* @param obj the obj
|
||||||
* @return the string
|
* @return the string
|
||||||
* @throws JsonProcessingException the json processing exception
|
* @throws JsonProcessingException the json processing exception
|
||||||
*/
|
*/
|
||||||
public String toJSON(T obj) throws JsonProcessingException{
|
public <T> String toJSON(T obj) throws JsonProcessingException{
|
||||||
|
|
||||||
// Convert object to JSON string
|
// Convert object to JSON string
|
||||||
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
|
return objectMapper.writeValueAsString(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read object.
|
* Read object.
|
||||||
*
|
*
|
||||||
|
* @param <T> the generic type
|
||||||
* @param json the json
|
* @param json the json
|
||||||
* @param obj the obj
|
* @param obj the obj
|
||||||
* @return the t
|
* @return the t
|
||||||
|
@ -48,8 +63,122 @@ public class JsonUtil<T> {
|
||||||
* @throws JsonMappingException the json mapping exception
|
* @throws JsonMappingException the json mapping exception
|
||||||
* @throws IOException Signals that an I/O exception has occurred.
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
*/
|
*/
|
||||||
public T readObject(String json, Class<T> obj) throws JsonParseException, JsonMappingException, IOException{
|
public <T> T readObject(String json, Class<T> obj) throws JsonParseException, JsonMappingException, IOException{
|
||||||
// Convert JSON string from file to Object
|
// Convert JSON string from file to Object
|
||||||
return mapper.readValue(json, obj);
|
return objectMapper.readValue(json, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read list.
|
||||||
|
*
|
||||||
|
* @param <T> the generic type
|
||||||
|
* @param arrayToJson the array to json
|
||||||
|
* @param mapType the map type
|
||||||
|
* @return the list
|
||||||
|
* @throws JsonParseException the json parse exception
|
||||||
|
* @throws JsonMappingException the json mapping exception
|
||||||
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
|
*/
|
||||||
|
public <T> List<T> readList(String arrayToJson, TypeReference<List<T>> mapType) throws JsonParseException, JsonMappingException, IOException{
|
||||||
|
// Convert JSON string from file to Object
|
||||||
|
return objectMapper.readValue(arrayToJson, mapType);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To json array.
|
||||||
|
*
|
||||||
|
* @param <T> the generic type
|
||||||
|
* @param obj the obj
|
||||||
|
* @return the string
|
||||||
|
* @throws JsonProcessingException the json processing exception
|
||||||
|
*/
|
||||||
|
public <T> String toJSONArray(List<T> obj) throws JsonProcessingException{
|
||||||
|
|
||||||
|
// Convert List<T> to JSON string
|
||||||
|
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the json object with the (key,value) passed in input.
|
||||||
|
*
|
||||||
|
* @param jsonArray the json array
|
||||||
|
* @param key the key
|
||||||
|
* @param value the value
|
||||||
|
* @return the JSON array
|
||||||
|
*/
|
||||||
|
public JSONArray removeJsonObject(JSONArray jsonArray, String key, String value){
|
||||||
|
if (jsonArray != null) {
|
||||||
|
JSONArray newArray = new JSONArray(); //THE NEW JSON ARRAY
|
||||||
|
for (int i=0; i < jsonArray.length(); i++){
|
||||||
|
JSONObject itemArr;
|
||||||
|
try {
|
||||||
|
|
||||||
|
itemArr = (JSONObject) jsonArray.get(i);
|
||||||
|
//IF JSON OBJECT DOES NOT CONTAIN THE PROPERTY
|
||||||
|
//RETURNING IT IN THE NEW JSON ARRAY
|
||||||
|
if(!itemArr.getString(key).equals(value)){
|
||||||
|
newArray.put(itemArr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (JSONException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the input json object.
|
||||||
|
* If the (key,value) is found in the jsonArray, it updates the object. Otherwise the jsonObject is added to jsonArray
|
||||||
|
*
|
||||||
|
* @param jsonArray the json array
|
||||||
|
* @param jsonObject the json object
|
||||||
|
* @param key the key
|
||||||
|
* @param value the value
|
||||||
|
* @return the JSON array
|
||||||
|
*/
|
||||||
|
public JSONArray updateJsonObject(JSONArray jsonArray, JSONObject jsonObject, String key, String value){
|
||||||
|
if (jsonArray != null) {
|
||||||
|
boolean found = false;
|
||||||
|
JSONArray newArray = new JSONArray(); //THE NEW JSON ARRAY
|
||||||
|
|
||||||
|
for (int i=0; i < jsonArray.length(); i++){
|
||||||
|
JSONObject itemArr;
|
||||||
|
try {
|
||||||
|
|
||||||
|
itemArr = (JSONObject) jsonArray.get(i);
|
||||||
|
//IF THE I-MO JSON OBJECT CONTAINS THE INPUT (KEY,VALUE)
|
||||||
|
//UPDATING IT WITH THE NEW INPUT OBJECT
|
||||||
|
if(itemArr.getString(key).equals(value)){
|
||||||
|
newArray.put(jsonObject);
|
||||||
|
found = true;
|
||||||
|
}else
|
||||||
|
newArray.put(itemArr);
|
||||||
|
}
|
||||||
|
catch (JSONException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!found){
|
||||||
|
newArray.put(jsonObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
return newArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,12 +3,20 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.common.workspacetaskexecutor;
|
package org.gcube.common.workspacetaskexecutor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
import org.gcube.common.workspacetaskexecutor.dataminer.WorkspaceDataMinerTaskExecutor;
|
import org.gcube.common.workspacetaskexecutor.dataminer.WorkspaceDataMinerTaskExecutor;
|
||||||
import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskConfiguration;
|
import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskConfiguration;
|
||||||
|
import org.gcube.common.workspacetaskexecutor.util.JsonUtil;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,11 +32,14 @@ public class TestDataMinerTaskExecutor {
|
||||||
|
|
||||||
public static String WORKSPACE_FOLDER_ID = "f5c2f5ab-5c35-4418-8e60-d48d173538ed";
|
public static String WORKSPACE_FOLDER_ID = "f5c2f5ab-5c35-4418-8e60-d48d173538ed";
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
ScopeProvider.instance.set(SCOPE);
|
ScopeProvider.instance.set(SCOPE);
|
||||||
WorkspaceDataMinerTaskExecutor exec = WorkspaceDataMinerTaskExecutor.getInstance();
|
WorkspaceDataMinerTaskExecutor exec = WorkspaceDataMinerTaskExecutor.getInstance();
|
||||||
exec.withOwner(USERNAME);
|
exec.withOwner(USERNAME);
|
||||||
|
jsonCheck();
|
||||||
|
|
||||||
|
|
||||||
// try {
|
// try {
|
||||||
// new TaskConfiguration(algorithmId, taskDescription, token, workspaceItemId, mapParameters)
|
// new TaskConfiguration(algorithmId, taskDescription, token, workspaceItemId, mapParameters)
|
||||||
|
@ -77,7 +88,37 @@ public class TestDataMinerTaskExecutor {
|
||||||
public static TaskConfiguration createDummyConfiguration(){
|
public static TaskConfiguration createDummyConfiguration(){
|
||||||
Map<String, String> mapParameters = new HashMap<String, String>();
|
Map<String, String> mapParameters = new HashMap<String, String>();
|
||||||
mapParameters.put("publiclink", "this is the public link");
|
mapParameters.put("publiclink", "this is the public link");
|
||||||
return new TaskConfiguration("this is the task id", null, "my token", WORKSPACE_FOLDER_ID, mapParameters);
|
return new TaskConfiguration(UUID.randomUUID().toString(), null, "my token", WORKSPACE_FOLDER_ID, mapParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void jsonCheck(){
|
||||||
|
TaskConfiguration c1 = createDummyConfiguration();
|
||||||
|
TaskConfiguration c2 = createDummyConfiguration();
|
||||||
|
List<TaskConfiguration> listConfigurations = new ArrayList<>();
|
||||||
|
listConfigurations.add(c1);
|
||||||
|
listConfigurations.add(c2);
|
||||||
|
JsonUtil jUtil = new JsonUtil();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String jsonArray = jUtil.toJSONArray(listConfigurations);
|
||||||
|
System.out.println("Json array: "+jsonArray);
|
||||||
|
TypeReference<List<TaskConfiguration>> mapType = new TypeReference<List<TaskConfiguration>>() {};
|
||||||
|
List<TaskConfiguration> listUnM = jUtil.readList(jsonArray, mapType);
|
||||||
|
System.out.println("Json array to listUnM...");
|
||||||
|
for (TaskConfiguration taskConfiguration : listUnM) {
|
||||||
|
System.out.println(taskConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (JsonProcessingException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue