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 + "]"; + } + +}