diff --git a/.classpath b/.classpath
index 15fcc7d..2328242 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -34,5 +34,5 @@
-
+
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 08bc278..27d450d 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,9 +1,12 @@
-
+
+
+ uses
+
diff --git a/distro/changelog.xml b/distro/changelog.xml
index d6224c6..8b7b1b8 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -1,4 +1,7 @@
+
+ Added automatic run [ticket #16155]
+
First release
diff --git a/pom.xml b/pom.xml
index e447f83..b8ff7e0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
org.gcube.portlets.user
data-miner-executor
- 1.0.0-SNAPSHOT
+ 1.1.0-SNAPSHOT
war
data-miner-executor
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/DataMinerExecutorController.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/DataMinerExecutorController.java
index 9258eee..ad1a375 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/DataMinerExecutorController.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/DataMinerExecutorController.java
@@ -3,7 +3,6 @@ package org.gcube.portlets.user.dataminerexecutor.client;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
-import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminerexecutor.client.events.CancelComputationExecutionRequestEvent;
@@ -29,6 +28,7 @@ import org.gcube.portlets.user.dataminerexecutor.client.util.InfoMessageBox;
import org.gcube.portlets.user.dataminerexecutor.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminerexecutor.shared.Constants;
import org.gcube.portlets.user.dataminerexecutor.shared.exception.SessionExpiredServiceException;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import com.allen_sauer.gwt.log.client.Log;
@@ -381,7 +381,7 @@ public class DataMinerExecutorController {
messageBox.show();
DataMinerExecutorServiceAsync.INSTANCE.getInvocationModel(invocationModelFileUrl,
- new AsyncCallback() {
+ new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
@@ -401,10 +401,10 @@ public class DataMinerExecutorController {
}
@Override
- public void onSuccess(Operator operator) {
+ public void onSuccess(InvocationModel invocationModel) {
messageBox.hide();
- Log.debug("Invocation Retrieved: " + operator);
- InvocationModelEvent event = new InvocationModelEvent(operator);
+ Log.debug("Invocation Retrieved: " + invocationModel);
+ InvocationModelEvent event = new InvocationModelEvent(invocationModel);
Log.debug("Fire: " + event);
EventBusProvider.INSTANCE.fireEvent(event);
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/events/InvocationModelEvent.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/events/InvocationModelEvent.java
index 7aae0a4..5993179 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/events/InvocationModelEvent.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/events/InvocationModelEvent.java
@@ -1,6 +1,6 @@
package org.gcube.portlets.user.dataminerexecutor.client.events;
-import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
@@ -15,24 +15,21 @@ import com.google.gwt.event.shared.HasHandlers;
*
*
*/
-public class InvocationModelEvent
- extends GwtEvent {
+public class InvocationModelEvent extends GwtEvent {
public static Type TYPE = new Type();
- private Operator operator;
-
+ private InvocationModel invocationModel;
+
public interface InvocationModelEventHandler extends EventHandler {
void onInvocation(InvocationModelEvent event);
}
public interface HasInvocationModelEventHandler extends HasHandlers {
- public HandlerRegistration addInvocationModelEventHandler(
- InvocationModelEventHandler handler);
+ public HandlerRegistration addInvocationModelEventHandler(InvocationModelEventHandler handler);
}
-
- public InvocationModelEvent(Operator operator) {
- this.operator=operator;
+ public InvocationModelEvent(InvocationModel invocationModel) {
+ this.invocationModel = invocationModel;
}
@Override
@@ -53,14 +50,13 @@ public class InvocationModelEvent
source.fireEvent(event);
}
- public Operator getOperator() {
- return operator;
+ public InvocationModel getInvocationModel() {
+ return invocationModel;
}
@Override
public String toString() {
- return "InvocationModelEvent [operator=" + operator + "]";
+ return "InvocationModelEvent [invocationModel=" + invocationModel + "]";
}
-
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ComputationPanel.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ComputationPanel.java
index 816fb00..e984e6f 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ComputationPanel.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ComputationPanel.java
@@ -6,6 +6,7 @@ import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyE
import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent.ComputationReadyEventHandler;
import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent.HasComputationReadyEventHandler;
import org.gcube.portlets.user.dataminerexecutor.client.experiments.ComputationParametersPanel.ComputationParametersPanelHandler;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Image;
@@ -131,8 +132,40 @@ public class ComputationPanel extends FramedPanel implements HasComputationReady
}
- public void addOperator(Operator operator) {
- computationParametersPanel = new ComputationParametersPanel(operator);
+ public void addInvocation(InvocationModel invocationModel) {
+ computationParametersPanel = new ComputationParametersPanel(invocationModel.getOperator());
+ if(invocationModel.getInvocationAction()==null){
+ setReadyHandler();
+ } else {
+ switch(invocationModel.getInvocationAction()){
+ case EDIT:
+ setReadyHandler();
+ break;
+ case RUN:
+ automaticRun();
+ break;
+ case SHOW:
+ setReadyHandler();
+ break;
+ default:
+ setReadyHandler();
+ break;
+
+ }
+ }
+ }
+
+
+ private void automaticRun() {
+ addComputationParametersPanel(computationParametersPanel);
+ forceLayout();
+ Operator op = computationParametersPanel.getOperator();
+ ComputationReadyEvent event = new ComputationReadyEvent(op);
+ fireEvent(event);
+ }
+
+
+ private void setReadyHandler(){
computationParametersPanel.setHandler(new ComputationParametersPanelHandler() {
@Override
public void startComputation() {
@@ -147,7 +180,6 @@ public class ComputationPanel extends FramedPanel implements HasComputationReady
});
addComputationParametersPanel(computationParametersPanel);
-
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ExperimentPanel.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ExperimentPanel.java
index c296f04..8657284 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ExperimentPanel.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/ExperimentPanel.java
@@ -1,9 +1,9 @@
package org.gcube.portlets.user.dataminerexecutor.client.experiments;
-import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminerexecutor.client.events.InvocationModelEvent;
//import org.gcube.portlets.user.dataminerexecutor.client.events.InvocationModelRequestEvent;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.allen_sauer.gwt.log.client.Log;
import com.sencha.gxt.core.client.util.Margins;
@@ -45,7 +45,7 @@ public class ExperimentPanel extends SimpleContainer {
@Override
public void onInvocation(InvocationModelEvent event) {
Log.debug("Catch InvocationModelEvent: " + event);
- addOperator(event.getOperator());
+ addInvocation(event.getInvocationModel());
}
@@ -76,13 +76,13 @@ public class ExperimentPanel extends SimpleContainer {
*
*/
- private void addOperator(Operator operator) {
+ private void addInvocation(InvocationModel invocationModel) {
//if (lastOperatorSelected != null
// && lastOperatorSelected != operatorPanel)
// lastOperatorSelected.toggleSelected(false);
//if (lastOperatorSelected != operatorPanel)
// operatorPanel.toggleSelected(true);
//lastOperatorSelected = operatorPanel;
- workflowPanel.addOperator(operator);
+ workflowPanel.addInvocation(invocationModel);
}
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/WorkflowPanel.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/WorkflowPanel.java
index 5632f1a..86c15f7 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/WorkflowPanel.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/experiments/WorkflowPanel.java
@@ -8,6 +8,7 @@ import org.gcube.portlets.user.dataminerexecutor.client.DataMinerExecutor;
import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent;
import org.gcube.portlets.user.dataminerexecutor.client.events.ResubmitComputationExecutionEvent;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.allen_sauer.gwt.log.client.Log;
import com.sencha.gxt.widget.core.client.TabItemConfig;
@@ -104,9 +105,9 @@ public class WorkflowPanel extends TabPanel {
}
- public void addOperator(Operator op) {
+ public void addInvocation(InvocationModel invocationModel) {
setActiveWidget(computationPanel);
- computationPanel.addOperator(op);
+ computationPanel.addInvocation(invocationModel);
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorService.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorService.java
index df69b7f..65264ac 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorService.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorService.java
@@ -13,6 +13,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassi
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
import org.gcube.portlets.user.dataminerexecutor.shared.exception.ServiceException;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import com.google.gwt.user.client.rpc.RemoteService;
@@ -54,6 +55,6 @@ public interface DataMinerExecutorService extends RemoteService {
public ItemDescription getItemDescription(String itemId) throws ServiceException;
- public Operator getInvocationModel(String invocationModelFileUrl) throws ServiceException;
+ public InvocationModel getInvocationModel(String invocationModelFileUrl) throws ServiceException;
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorServiceAsync.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorServiceAsync.java
index 520e49e..3eb0f03 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/client/rpc/DataMinerExecutorServiceAsync.java
@@ -12,6 +12,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import com.google.gwt.core.client.GWT;
@@ -58,6 +59,6 @@ public interface DataMinerExecutorServiceAsync {
void getItemDescription(String itemId, AsyncCallback asyncCallback);
- void getInvocationModel(String invocationModelFileUrl, AsyncCallback callback);
+ void getInvocationModel(String invocationModelFileUrl, AsyncCallback callback);
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/server/DataMinerExecutorServiceImpl.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/server/DataMinerExecutorServiceImpl.java
index cfd40a1..7b656f3 100644
--- a/src/main/java/org/gcube/portlets/user/dataminerexecutor/server/DataMinerExecutorServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/server/DataMinerExecutorServiceImpl.java
@@ -19,6 +19,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
+import org.gcube.data.analysis.dminvocation.ActionType;
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
import org.gcube.data.analysis.dminvocation.model.DataMinerParam;
import org.gcube.portlets.user.dataminerexecutor.client.rpc.DataMinerExecutorService;
@@ -27,6 +28,8 @@ import org.gcube.portlets.user.dataminerexecutor.server.storage.StorageUtil;
import org.gcube.portlets.user.dataminerexecutor.server.util.DataMinerWorkAreaManager;
import org.gcube.portlets.user.dataminerexecutor.server.util.TableReader;
import org.gcube.portlets.user.dataminerexecutor.shared.exception.ServiceException;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationAction;
+import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -118,7 +121,7 @@ public class DataMinerExecutorServiceImpl extends RemoteServiceServlet implement
}
@Override
- public Operator getInvocationModel(String invocationModelFileUrl) throws ServiceException {
+ public InvocationModel getInvocationModel(String invocationModelFileUrl) throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest);
@@ -131,7 +134,27 @@ public class DataMinerExecutorServiceImpl extends RemoteServiceServlet implement
throw new ServiceException("Invalid Invocation, operator id not found!");
}
-
+
+ InvocationAction invocationAction;
+ ActionType actionType=dmInvocation.getActionType();
+ if(actionType==null){
+ invocationAction=InvocationAction.SHOW;
+ } else {
+ switch(actionType){
+ case EDIT:
+ invocationAction=InvocationAction.SHOW;
+ break;
+ case RUN:
+ invocationAction=InvocationAction.RUN;
+ break;
+ default:
+ invocationAction=InvocationAction.SHOW;
+ break;
+
+ }
+ }
+
+
if (dmInvocation.getParameters() == null || dmInvocation.getParameters().getInput() == null
|| dmInvocation.getParameters().getInput().getListParam() == null
|| dmInvocation.getParameters().getInput().getListParam().isEmpty()) {
@@ -178,7 +201,10 @@ public class DataMinerExecutorServiceImpl extends RemoteServiceServlet implement
operator.setOperatorParameters(inputParametersFilled);
- return operator;
+ InvocationModel invocationModel=new InvocationModel(invocationAction,operator);
+
+
+ return invocationModel;
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/shared/process/InvocationAction.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/shared/process/InvocationAction.java
new file mode 100644
index 0000000..34f3ee9
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/shared/process/InvocationAction.java
@@ -0,0 +1,36 @@
+package org.gcube.portlets.user.dataminerexecutor.shared.process;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ *
+ *
+ */
+public enum InvocationAction {
+
+ SHOW("show"),
+ EDIT("edit"),
+ RUN("run");
+
+ private String action;
+
+ /**
+ * Instantiates a new action type.
+ *
+ * @param action the action
+ */
+ InvocationAction(String action){
+ this.action = action;
+ }
+
+
+ /**
+ * Gets the action.
+ *
+ * @return the action
+ */
+ public String getAction() {
+
+ return action;
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/user/dataminerexecutor/shared/process/InvocationModel.java b/src/main/java/org/gcube/portlets/user/dataminerexecutor/shared/process/InvocationModel.java
new file mode 100644
index 0000000..07c5ff8
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/dataminerexecutor/shared/process/InvocationModel.java
@@ -0,0 +1,50 @@
+package org.gcube.portlets.user.dataminerexecutor.shared.process;
+
+import java.io.Serializable;
+
+import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ *
+ *
+ */
+public class InvocationModel implements Serializable {
+
+ private static final long serialVersionUID = -6912479380989389840L;
+ private InvocationAction invocationAction;
+ private Operator operator;
+
+ public InvocationModel() {
+ super();
+ }
+
+ public InvocationModel(InvocationAction invocationAction, Operator operator) {
+ super();
+ this.operator = operator;
+ this.invocationAction = invocationAction;
+ }
+
+ public Operator getOperator() {
+ return operator;
+ }
+
+ public void setOperator(Operator operator) {
+ this.operator = operator;
+ }
+
+ public InvocationAction getInvocationAction() {
+ return invocationAction;
+ }
+
+ public void setInvocationAction(InvocationAction invocationAction) {
+ this.invocationAction = invocationAction;
+ }
+
+ @Override
+ public String toString() {
+ return "InvocationModel [invocationAction=" + invocationAction + ", operator=" + operator + "]";
+ }
+
+}