Enhancement on Project Activity #11690

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/Common/workspace-task-executor-library@167295 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2018-05-03 09:58:32 +00:00
parent caa1debb49
commit 4978626ce7
6 changed files with 81 additions and 29 deletions

View File

@ -2,7 +2,7 @@ package org.gcube.common.workspacetaskexecutor.dataminer;
import org.apache.commons.lang.Validate;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.workspacetaskexecutor.shared.CheckableTask;
import org.gcube.common.workspacetaskexecutor.shared.IsItemExecutable;
import org.gcube.common.workspacetaskexecutor.shared.ConfigurableTask;
import org.gcube.common.workspacetaskexecutor.shared.ExecutableTask;
import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskConfiguration;
@ -22,7 +22,7 @@ import org.slf4j.LoggerFactory;
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* May 2, 2018
*/
public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfiguration, TaskExecutionStatus>, ConfigurableTask<TaskConfiguration>, CheckableTask<TaskConfiguration>{
public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfiguration, TaskExecutionStatus>, ConfigurableTask<TaskConfiguration>, IsItemExecutable<TaskConfiguration>{
/** The logger. */
private static Logger logger = LoggerFactory.getLogger(WorkspaceDataMinerTaskExecutor.class);
@ -211,7 +211,7 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
* @see org.gcube.common.workspacetaskexecutor.ExecutableTask#doRun(org.gcube.common.workspacetaskexecutor.BaseTaskConfiguration)
*/
@Override
public TaskExecutionStatus doRun(TaskConfiguration taskConfiguration)
public TaskExecutionStatus executeRun(TaskConfiguration taskConfiguration)
throws ItemNotExecutableException, TaskNotExecutableException, Exception {
ValidateTaskConfiguration(taskConfiguration);
@ -227,7 +227,7 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
* @see org.gcube.common.workspacetaskexecutor.ExecutableTask#stopRun(org.gcube.common.workspacetaskexecutor.BaseTaskConfiguration)
*/
@Override
public Boolean stopRun(TaskConfiguration taskConfiguration)
public Boolean abortRun(TaskConfiguration taskConfiguration)
throws TaskErrorException, Exception {
// TODO Auto-generated method stub

View File

@ -51,7 +51,7 @@ public interface BaseTaskConfiguration {
*
* @return the access key
*/
String getAccessKey();
String getConfigurationKey();
/**
@ -59,7 +59,7 @@ public interface BaseTaskConfiguration {
*
* @param accessKey the access key
*/
void setAccessKey(String accessKey);
void setConfigurationKey(String accessKey);
}

View File

@ -16,25 +16,25 @@ public interface ExecutableTask<I extends BaseTaskConfiguration, O extends BaseT
/**
* Do run.
* Execute run.
*
* @param taskConfiguration the base task configuration
* @param taskConfiguration the task configuration
* @return the o
* @throws ItemNotExecutableException the item not executable exception
* @throws Exception the exception
*/
O doRun(I taskConfiguration) throws ItemNotExecutableException, Exception;
O executeRun(I taskConfiguration) throws ItemNotExecutableException, Exception;
/**
* Stop run.
* Abort run.
*
* @param taskConfiguration the task configuration
* @return the boolean
* @throws TaskErrorException the task error exception
* @throws Exception the exception
*/
Boolean stopRun(I taskConfiguration) throws TaskErrorException, Exception;
Boolean abortRun(I taskConfiguration) throws TaskErrorException, Exception;
/**

View File

@ -7,13 +7,13 @@ import org.gcube.common.workspacetaskexecutor.shared.exception.ItemNotExecutable
/**
* The Interface DoCheckTask.
* The Interface IsItemExecutable.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Apr 26, 2018
* @param <T> the generic type
* May 3, 2018
* @param <T> the generic type must exteds {@link BaseTaskConfiguration}
*/
public interface CheckableTask<T extends BaseTaskConfiguration> {
public interface IsItemExecutable<T extends BaseTaskConfiguration> {
/**

View File

@ -6,6 +6,7 @@ package org.gcube.common.workspacetaskexecutor.shared.dataminer;
import java.io.Serializable;
import java.util.Map;
import java.util.Random;
import org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration;
@ -33,7 +34,7 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
@JsonIgnoreProperties
private Map<String, String> mapParameters; //optional
@JsonIgnoreProperties
private String accessKey;
private String configurationKey;
/**
@ -65,21 +66,21 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
* @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration#getAccessKey()
*/
@Override
public String getAccessKey() {
public String getConfigurationKey() {
if(accessKey==null)
accessKey = hashCode()+"";
if(configurationKey==null)
configurationKey = hashCode()+"";
return accessKey;
return configurationKey;
}
/* (non-Javadoc)
* @see org.gcube.common.workspacetaskexecutor.shared.BaseTaskConfiguration#setAccessKey(java.lang.String)
*/
@Override
public void setAccessKey(String accessKey) {
public void setConfigurationKey(String configurationKey) {
this.accessKey = accessKey;
this.configurationKey = configurationKey;
}
@ -206,6 +207,7 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
int hash = 1;
hash = hash * 13 + (taskId == null ? 0 : taskId.hashCode());
hash = hash * 17 + (workspaceItemId == null ? 0 : workspaceItemId.hashCode());
hash = hash * new Random().nextInt();
return hash;
}
@ -226,14 +228,12 @@ public class TaskConfiguration implements BaseTaskConfiguration, Serializable {
builder.append(workspaceItemId);
builder.append(", mapParameters=");
builder.append(mapParameters);
builder.append(", accessKey=");
builder.append(accessKey);
builder.append(", configurationKey=");
builder.append(configurationKey);
builder.append("]");
return builder.toString();
}
}

View File

@ -10,10 +10,16 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.workspacetaskexecutor.dataminer.WorkspaceDataMinerTaskExecutor;
import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskConfiguration;
import org.gcube.common.workspacetaskexecutor.util.JsonUtil;
import org.gcube.common.workspacetaskexecutor.util.WsUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
@ -32,13 +38,17 @@ public class TestDataMinerTaskExecutor {
public static String WORKSPACE_FOLDER_ID = "f5c2f5ab-5c35-4418-8e60-d48d173538ed";
private static JsonUtil jUtil = new JsonUtil();
public static void main(String[] args) {
ScopeProvider.instance.set(SCOPE);
WorkspaceDataMinerTaskExecutor exec = WorkspaceDataMinerTaskExecutor.getInstance();
exec.withOwner(USERNAME);
jsonCheck();
//jsonCheck();
checkGubeProperties(gelDummyListOfConfigurations());
// try {
@ -85,20 +95,62 @@ public class TestDataMinerTaskExecutor {
}
public static void checkGubeProperties(List<TaskConfiguration> listConfigurations){
//SET
try {
WorkspaceItem workspaceItem = WsUtil.getItem(USERNAME, WORKSPACE_FOLDER_ID);
String jsonArray = jUtil.toJSONArray(listConfigurations);
System.out.println("Json array to save: "+jsonArray);
WsUtil.setPropertyValue(workspaceItem, WorkspaceDataMinerTaskExecutor.WS_DM_TASK_TASK_CONF, jsonArray);
//GET
jsonArray = WsUtil.getPropertyValue(workspaceItem, WorkspaceDataMinerTaskExecutor.WS_DM_TASK_TASK_CONF);
System.out.println("Json array read from "+WorkspaceDataMinerTaskExecutor.WS_DM_TASK_TASK_CONF+": "+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 (WorkspaceFolderNotFoundException | ItemNotFoundException
| InternalErrorException | HomeNotFoundException | JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static TaskConfiguration createDummyConfiguration(){
Map<String, String> mapParameters = new HashMap<String, String>();
mapParameters.put("publiclink", "this is the public link");
return new TaskConfiguration(UUID.randomUUID().toString(), null, "my token", WORKSPACE_FOLDER_ID, mapParameters);
}
public static void jsonCheck(){
public static List<TaskConfiguration> gelDummyListOfConfigurations(){
TaskConfiguration c1 = createDummyConfiguration();
TaskConfiguration c2 = createDummyConfiguration();
List<TaskConfiguration> listConfigurations = new ArrayList<>();
listConfigurations.add(c1);
listConfigurations.add(c2);
JsonUtil jUtil = new JsonUtil();
return listConfigurations;
}
public static void jsonCheck(){
List<TaskConfiguration> listConfigurations = gelDummyListOfConfigurations();
try {
String jsonArray = jUtil.toJSONArray(listConfigurations);
System.out.println("Json array: "+jsonArray);