create(OrangeProgressBarTemplate.class));
+ }
+
+ public OrangeProgressBarAppearance(OrangeProgressBarResources resources,
+ OrangeProgressBarTemplate template) {
+ this.style = resources.style();
+ this.style.ensureInjected();
+ this.template = template;
+ }
+
+ @Override
+ public void render(SafeHtmlBuilder sb, Double value,
+ ProgressBarAppearanceOptions options) {
+ value = value == null ? 0 : value;
+ double valueWidth = value * options.getWidth();
+
+ int vw = new Double(valueWidth).intValue();
+
+ String text = options.getProgressText();
+
+ if (text != null) {
+ int v = (int) Math.round(value * 100);
+ text = Format.substitute(text, v);
+ }
+
+ SafeHtml txt;
+ if (text == null) {
+ txt = SafeHtmlUtils.fromSafeConstant(" ");
+ } else {
+ txt = SafeHtmlUtils.fromString(text);
+ }
+
+ int adj = GXT.isIE() ? 4 : 2;
+
+ SafeStyles wrapStyles = SafeStylesUtils.fromTrustedString("width:"
+ + (options.getWidth() - adj) + "px;");
+ SafeStyles progressBarStyles = SafeStylesUtils
+ .fromTrustedString("width:" + vw + "px;");
+ SafeStyles progressTextStyles = SafeStylesUtils
+ .fromTrustedString("width:" + Math.max(vw - 8, 0) + "px;");
+ SafeStyles widthStyles = SafeStylesUtils.fromTrustedString("width:"
+ + (Math.max(0, options.getWidth() - adj)) + "px;");
+ sb.append(template.render(txt, style, wrapStyles, progressBarStyles,
+ progressTextStyles, widthStyles));
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/custom/progress/orange-bg.gif b/src/main/java/org/gcube/portlets/user/dataminermanager/client/custom/progress/orange-bg.gif
new file mode 100644
index 0000000..9bc56ad
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/dataminermanager/client/custom/progress/orange-bg.gif differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/custom/progress/orange-progress-bg.gif b/src/main/java/org/gcube/portlets/user/dataminermanager/client/custom/progress/orange-progress-bg.gif
new file mode 100644
index 0000000..8806af1
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/dataminermanager/client/custom/progress/orange-progress-bg.gif differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java
index ee565bc..f661762 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java
@@ -379,7 +379,7 @@ public class InputDataSetsPanel extends FramedPanel {
}
} catch (Throwable e) {
- Log.error("Error in ImputDataSetsPanel: " + e.getLocalizedMessage());
+ Log.error("Error in InputDataSetsPanel: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experiments/ComputationStatusPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experiments/ComputationStatusPanel.java
index ae47435..7f7dfa3 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/experiments/ComputationStatusPanel.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/experiments/ComputationStatusPanel.java
@@ -7,6 +7,7 @@ import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.custom.progress.GreenProgressBar;
+import org.gcube.portlets.user.dataminermanager.client.custom.progress.OrangeProgressBar;
import org.gcube.portlets.user.dataminermanager.client.custom.progress.RedProgressBar;
import org.gcube.portlets.user.dataminermanager.client.events.CancelComputationExecutionRequestEvent;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
@@ -86,24 +87,25 @@ public class ComputationStatusPanel extends SimpleContainer {
vert.add(new HtmlLayoutContainer("Created, the id is "
+ computationId.getId() + " [link]
"));
-
- TextButton equivalentRequestBtn=new TextButton();
+
+ TextButton equivalentRequestBtn = new TextButton();
equivalentRequestBtn.setText("Show");
equivalentRequestBtn.addSelectHandler(new SelectHandler() {
-
+
@Override
public void onSelect(SelectEvent event) {
showEquivalentRequestDialog();
-
+
}
-
});
-
- FieldLabel equivalentRequestLabel=new FieldLabel(equivalentRequestBtn,"Equivalent Get Request");
+
+ FieldLabel equivalentRequestLabel = new FieldLabel(
+ equivalentRequestBtn, "Equivalent Get Request");
equivalentRequestLabel.setLabelWidth(140);
- vert.add(equivalentRequestLabel, new VerticalLayoutData(-1, -1, new Margins(0)));
-
+ vert.add(equivalentRequestLabel, new VerticalLayoutData(-1, -1,
+ new Margins(0)));
+
progressBar = new ProgressBar();
progressBar.updateProgress(0, "Starting...");
vert.add(progressBar, new VerticalLayoutData(1, -1, new Margins(20)));
@@ -130,8 +132,9 @@ public class ComputationStatusPanel extends SimpleContainer {
}
private void showEquivalentRequestDialog() {
- EquivalentRequestDialog equivalentRequestDialog=new EquivalentRequestDialog(computationId);
- equivalentRequestDialog.show();
+ EquivalentRequestDialog equivalentRequestDialog = new EquivalentRequestDialog(
+ computationId);
+ equivalentRequestDialog.show();
}
private void cancelComputation() {
@@ -172,7 +175,8 @@ public class ComputationStatusPanel extends SimpleContainer {
if (computationStatus.getError() == null) {
errorMessage = new String("Computation Failed!");
} else {
- errorMessage = computationStatus.getError().getLocalizedMessage();
+ errorMessage = computationStatus.getError()
+ .getLocalizedMessage();
}
Info.display("Failed",
"The computation " + computationId.getId() + " of "
@@ -191,6 +195,26 @@ public class ComputationStatusPanel extends SimpleContainer {
.setMarginBottom(36, Unit.PX);
vert.insert(progressBar, index, new VerticalLayoutData(1, -1,
new Margins(20)));
+ } else if (computationStatus.isCancelled()) {
+ Log.debug("Computation Cancelled");
+ String errorMessage;
+ errorMessage = new String("Computation Cancelled!");
+ Info.display("Info", "The computation " + computationId.getId()
+ + " of " + computationId.getOperatorName()
+ + " has been cancelled.");
+ UtilsGXT3.info("Info",
+ "The computation " + computationId.getId() + " of "
+ + computationId.getOperatorName()
+ + " has been cancelled." + errorMessage);
+ int index = vert.getWidgetIndex(progressBar);
+ vert.remove(index);
+ // TODO
+ progressBar = new OrangeProgressBar();
+ progressBar.updateProgress(1, "Computation Cancelled");
+ progressBar.getElement().getStyle()
+ .setMarginBottom(36, Unit.PX);
+ vert.insert(progressBar, index, new VerticalLayoutData(1, -1,
+ new Margins(20)));
}
}
@@ -198,8 +222,6 @@ public class ComputationStatusPanel extends SimpleContainer {
forceLayout();
}
-
-
/**
*
*/
@@ -218,23 +240,21 @@ public class ComputationStatusPanel extends SimpleContainer {
}
-
-
/**
* @param computationStatus
*/
private void updateStatus(ComputationStatus computationStatus) {
- Log.debug("Conputation Status Panel ::Update Status "+computationStatus);
- if (computationStatus.getStatus().compareTo(Status.ACCEPTED)==0)
+ Log.debug("Conputation Status Panel ::Update Status "
+ + computationStatus);
+ if (computationStatus.getStatus().compareTo(Status.ACCEPTED) == 0)
progressBar.updateText("Accepted...");
else {
double percentage = computationStatus.getPercentage();
- if(percentage==0){
+ if (percentage == 0) {
progressBar.updateText("Running, 0% Complete");
} else {
- progressBar.updateProgress(percentage/100, "Running, "
- + percentage
- + "% Complete");
+ progressBar.updateProgress(percentage / 100, "Running, "
+ + percentage + "% Complete");
}
}
forceLayout();
@@ -267,12 +287,15 @@ public class ComputationStatusPanel extends SimpleContainer {
@Override
public void onSuccess(
ComputationStatus computationStatus) {
- if (computationStatus.isTerminated()) {
- ComputationTimer.this.cancel();
- computationTerminated(computationId,
- computationStatus);
- } else
- updateStatus(computationStatus);
+ Log.debug("ComputationStatus: "+computationStatus);
+ if (computationStatus != null) {
+ if (computationStatus.isTerminated()) {
+ ComputationTimer.this.cancel();
+ computationTerminated(computationId,
+ computationStatus);
+ } else
+ updateStatus(computationStatus);
+ }
}
});
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java
index e187fda..97eb1ed 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/FileFld.java
@@ -8,6 +8,8 @@ import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
+import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
+import org.gcube.portlets.user.dataminermanager.client.events.SessionExpiredEvent;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
@@ -20,6 +22,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.dom.XDOM;
@@ -37,8 +40,8 @@ import com.sencha.gxt.widget.core.client.form.TextField;
/**
*
- * @author Giancarlo Panichi
- * email: g.panichi@isti.cnr.it
+ * @author Giancarlo Panichi email: g.panichi@isti.cnr.it
*
*/
public class FileFld extends AbstractFld {
@@ -56,23 +59,25 @@ public class FileFld extends AbstractFld {
private HBoxLayoutContainer horiz;
+ private TextButton downloadButton;
+
/**
* @param parameter
*/
public FileFld(Parameter parameter) {
- super(parameter);
+ super(parameter);
fileParameter = (FileParameter) parameter;
-
- SimpleContainer tabContainer=new SimpleContainer();
- vp=new VerticalLayoutContainer();
+
+ SimpleContainer tabContainer = new SimpleContainer();
+ vp = new VerticalLayoutContainer();
init();
tabContainer.add(vp, new MarginData(new Margins(0)));
-
+
fieldContainer = new SimpleContainer();
horiz = new HBoxLayoutContainer();
horiz.setPack(BoxLayoutPack.START);
horiz.setEnableOverflow(false);
-
+
HtmlLayoutContainer descr;
if (fileParameter.getDescription() == null) {
@@ -90,11 +95,10 @@ public class FileFld extends AbstractFld {
fieldContainer.add(horiz);
showNoSelectionField();
-
+
}
-
-
- private void init(){
+
+ private void init() {
List selectableTypes = new ArrayList();
selectableTypes.add(ItemType.EXTERNAL_FILE);
@@ -114,7 +118,6 @@ public class FileFld extends AbstractFld {
} else {
retrieveFileInformation(item);
-
}
}
@@ -142,23 +145,21 @@ public class FileFld extends AbstractFld {
wselectDialog.setZIndex(XDOM.getTopZIndex());
selectButton = new TextButton("Select File");
- selectButton.setIcon(DataMinerManager.resources.folderExplore());
+ selectButton.setIcon(DataMinerManager.resources.folderExplore());
selectButton.addSelectHandler(new SelectEvent.SelectHandler() {
-
+
@Override
public void onSelect(SelectEvent event) {
wselectDialog.show();
-
+
}
});
selectButton.setToolTip("Select File");
-
-
- selectButton2 = new TextButton("");
+ selectButton2 = new TextButton("");
selectButton2.setIcon(DataMinerManager.resources.folderExplore());
selectButton2.addSelectHandler(new SelectEvent.SelectHandler() {
-
+
@Override
public void onSelect(SelectEvent event) {
wselectDialog.show();
@@ -169,21 +170,31 @@ public class FileFld extends AbstractFld {
cancelButton = new TextButton("");
cancelButton.setIcon(DataMinerManager.resources.cancel());
cancelButton.addSelectHandler(new SelectEvent.SelectHandler() {
-
+
@Override
public void onSelect(SelectEvent event) {
selectedFileItem = null;
showNoSelectionField();
}
});
-
+
+ downloadButton = new TextButton("");
+ downloadButton.setIcon(DataMinerManager.resources.fileDownload());
+ downloadButton.addSelectHandler(new SelectEvent.SelectHandler() {
+
+ @Override
+ public void onSelect(SelectEvent event) {
+ downloadFile();
+ }
+ });
+
}
private void retrieveFileInformation(final Item item) {
Log.debug("Retrieved: " + item);
- final ItemDescription itemDescription = new ItemDescription(item.getId(),
- item.getName(), item.getOwner(), item.getPath(), item.getType()
- .name());
+ final ItemDescription itemDescription = new ItemDescription(
+ item.getId(), item.getName(), item.getOwner(), item.getPath(),
+ item.getType().name());
DataMinerPortletServiceAsync.INSTANCE.getPublicLink(itemDescription,
new AsyncCallback() {
@@ -196,8 +207,7 @@ public class FileFld extends AbstractFld {
UtilsGXT3.alert("Error", "Expired Session");
} else {
- UtilsGXT3.alert(
- "Error",
+ UtilsGXT3.alert("Error",
"Error retrieving file informations: "
+ caught.getLocalizedMessage());
}
@@ -214,10 +224,41 @@ public class FileFld extends AbstractFld {
}
});
-
-
}
+ private void downloadFile() {
+ if (selectedFileItem != null) {
+ DataMinerPortletServiceAsync.INSTANCE.getPublicLink(
+ selectedFileItem, new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof ExpiredSessionServiceException) {
+ EventBusProvider.INSTANCE
+ .fireEvent(new SessionExpiredEvent());
+ } else {
+ Log.error("Error downloading file: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
+ caught.printStackTrace();
+
+ }
+
+ @Override
+ public void onSuccess(String link) {
+ Log.debug("Retrieved link: " + link);
+ Window.open(link, selectedFileItem.getName(), "");
+ }
+
+ });
+
+ } else {
+ UtilsGXT3.info("Attention", "Select a file!");
+ }
+
+ }
private void showNoSelectionField() {
vp.clear();
@@ -228,24 +269,25 @@ public class FileFld extends AbstractFld {
private void showFieldWithSelection() {
String fileName = selectedFileItem.getName();
-
- if(fileName==null|| fileName.isEmpty()){
- fileName="NoName";
+
+ if (fileName == null || fileName.isEmpty()) {
+ fileName = "NoName";
}
-
- TextField tableDescription=new TextField();
+
+ TextField tableDescription = new TextField();
tableDescription.setValue(fileName);
tableDescription.setReadOnly(true);
-
- HBoxLayoutContainer h=new HBoxLayoutContainer();
- h.add(tableDescription,new BoxLayoutData(new Margins()));
- h.add(selectButton2,new BoxLayoutData(new Margins()));
- h.add(cancelButton,new BoxLayoutData(new Margins()));
+
+ HBoxLayoutContainer h = new HBoxLayoutContainer();
+ h.add(tableDescription, new BoxLayoutData(new Margins()));
+ h.add(selectButton2, new BoxLayoutData(new Margins()));
+ h.add(downloadButton, new BoxLayoutData(new Margins()));
+ h.add(cancelButton, new BoxLayoutData(new Margins()));
vp.clear();
vp.add(h);
vp.forceLayout();
fieldContainer.forceLayout();
-
+
}
/**
@@ -263,7 +305,8 @@ public class FileFld extends AbstractFld {
@Override
public String getValue() {
- return (selectedFileItem == null) ? null : selectedFileItem.getPublicLink();
+ return (selectedFileItem == null) ? null : selectedFileItem
+ .getPublicLink();
}
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabItem.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabItem.java
index ccf362d..1d940dd 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabItem.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabItem.java
@@ -5,17 +5,21 @@ import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
+import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
+import org.gcube.portlets.user.dataminermanager.client.events.SessionExpiredEvent;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import org.gcube.portlets.user.dataminermanager.shared.parameters.TabularParameter;
+import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sencha.gxt.core.client.dom.XDOM;
import com.sencha.gxt.core.client.util.Margins;
@@ -40,6 +44,8 @@ public class TabItem extends HBoxLayoutContainer {
private TextButton removeBtn;
private TextField tableDescription;
private WorkspaceExplorerSelectDialog wselectDialog;
+ private TextButton downloadButton;
+ private ItemDescription itemDescriptionSelected;
/**
*
@@ -74,6 +80,8 @@ public class TabItem extends HBoxLayoutContainer {
selectButton.setToolTip("Select Data Set");
selectButton2 = new TextButton("");
+ selectButton2.setIcon(DataMinerManager.resources.folderExplore());
+ selectButton2.setToolTip("Select Another Data Set");
selectButton2.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
@@ -81,15 +89,23 @@ public class TabItem extends HBoxLayoutContainer {
wselectDialog.show();
}
});
-
- selectButton2.setIcon(DataMinerManager.resources.folderExplore());
- selectButton2.setToolTip("Select Another Data Set");
selectButton2.setVisible(false);
+
+
+ downloadButton = new TextButton("");
+ downloadButton.setIcon(DataMinerManager.resources.fileDownload());
+ downloadButton.addSelectHandler(new SelectEvent.SelectHandler() {
+ @Override
+ public void onSelect(SelectEvent event) {
+ downloadFile();
+ }
+ });
+ downloadButton.setVisible(false);
+
+
addBtn = new TextButton("");
-
addBtn.setIcon(DataMinerManager.resources.add());
-
addBtn.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
@@ -101,7 +117,6 @@ public class TabItem extends HBoxLayoutContainer {
removeBtn = new TextButton("");
removeBtn.setIcon(DataMinerManager.resources.cancel());
-
removeBtn.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
@@ -113,18 +128,18 @@ public class TabItem extends HBoxLayoutContainer {
});
removeBtn.setVisible(!first);
+
+
setPack(BoxLayoutPack.START);
setEnableOverflow(false);
add(tableDescription, new BoxLayoutData(new Margins()));
add(selectButton, new BoxLayoutData(new Margins()));
add(selectButton2, new BoxLayoutData(new Margins()));
+ add(downloadButton, new BoxLayoutData(new Margins()));
add(addBtn, new BoxLayoutData(new Margins()));
add(removeBtn, new BoxLayoutData(new Margins()));
-
-
-
-
+
forceLayout();
}
@@ -198,6 +213,11 @@ public class TabItem extends HBoxLayoutContainer {
}
private void retrieveTableInformation(Item item) {
+ Log.debug("Retrieved: " + item);
+ itemDescriptionSelected = new ItemDescription(
+ item.getId(), item.getName(), item.getOwner(), item.getPath(),
+ item.getType().name());
+
DataMinerPortletServiceAsync.INSTANCE.retrieveTableInformation(item,
new AsyncCallback() {
@@ -226,6 +246,41 @@ public class TabItem extends HBoxLayoutContainer {
});
}
+
+ private void downloadFile() {
+ if (itemDescriptionSelected != null) {
+ DataMinerPortletServiceAsync.INSTANCE.getPublicLink(
+ itemDescriptionSelected, new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof ExpiredSessionServiceException) {
+ EventBusProvider.INSTANCE
+ .fireEvent(new SessionExpiredEvent());
+ } else {
+ Log.error("Error downloading table: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
+ caught.printStackTrace();
+
+ }
+
+ @Override
+ public void onSuccess(String link) {
+ Log.debug("Retrieved link: " + link);
+ Window.open(link, itemDescriptionSelected.getName(), "");
+ }
+
+ });
+
+ } else {
+ UtilsGXT3.info("Attention", "Select a Table!");
+ }
+
+ }
+
/**
*
*/
@@ -242,6 +297,7 @@ public class TabItem extends HBoxLayoutContainer {
tableDescription.setVisible(true);
selectButton.setVisible(false);
selectButton2.setVisible(true);
+ downloadButton.setVisible(true);
parent.forceLayout();
} catch (Throwable e) {
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java
index cce29ce..00c0e57 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/parametersfield/TabularFld.java
@@ -8,6 +8,8 @@ import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
+import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
+import org.gcube.portlets.user.dataminermanager.client.events.SessionExpiredEvent;
import org.gcube.portlets.user.dataminermanager.client.events.TabularFldChangeEvent;
import org.gcube.portlets.user.dataminermanager.client.events.TabularFldChangeEvent.HasTabularFldChangeEventHandler;
import org.gcube.portlets.user.dataminermanager.client.events.TabularFldChangeEvent.TabularFldChangeEventHandler;
@@ -17,6 +19,7 @@ import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import org.gcube.portlets.user.dataminermanager.shared.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.TabularParameter;
+import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
@@ -25,6 +28,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.dom.XDOM;
@@ -55,10 +59,13 @@ public class TabularFld extends AbstractFld implements
private VerticalLayoutContainer vp;
private WorkspaceExplorerSelectDialog wselectDialog;
- private TextButton selectButton, selectButton2, cancelButton;
+ private TextButton selectButton, selectButton2, cancelButton,
+ downloadButton;
private HtmlLayoutContainer templatesList;
private TableItemSimple selectedTableItem = null;
+ private ItemDescription itemDescriptionSelected;
private TabularParameter tabularParameter;
+
/**
* @param parameter
@@ -78,7 +85,8 @@ public class TabularFld extends AbstractFld implements
showNoSelectionField();
} catch (Throwable e) {
Log.error("TabularField: " + e.getLocalizedMessage());
- UtilsGXT3.alert("Error", "Error creating Tabular Field: "+e.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ "Error creating Tabular Field: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
@@ -231,6 +239,7 @@ public class TabularFld extends AbstractFld implements
selectButton2.setToolTip("Select Another Data Set");
cancelButton = new TextButton("");
+ cancelButton.setIcon(DataMinerManager.resources.cancel());
cancelButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
@@ -241,7 +250,15 @@ public class TabularFld extends AbstractFld implements
}
});
- cancelButton.setIcon(DataMinerManager.resources.cancel());
+ downloadButton = new TextButton("");
+ downloadButton.setIcon(DataMinerManager.resources.fileDownload());
+ downloadButton.addSelectHandler(new SelectEvent.SelectHandler() {
+
+ @Override
+ public void onSelect(SelectEvent event) {
+ downloadFile();
+ }
+ });
} catch (Throwable e) {
Log.error("TabularField init: " + e.getLocalizedMessage());
e.printStackTrace();
@@ -250,6 +267,12 @@ public class TabularFld extends AbstractFld implements
}
private void retrieveTableInformation(Item item) {
+ Log.debug("Retrieved: " + item);
+ itemDescriptionSelected = new ItemDescription(
+ item.getId(), item.getName(), item.getOwner(), item.getPath(),
+ item.getType().name());
+
+
DataMinerPortletServiceAsync.INSTANCE.retrieveTableInformation(item,
new AsyncCallback() {
@@ -277,6 +300,40 @@ public class TabularFld extends AbstractFld implements
}
});
}
+
+ private void downloadFile() {
+ if (itemDescriptionSelected != null) {
+ DataMinerPortletServiceAsync.INSTANCE.getPublicLink(
+ itemDescriptionSelected, new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof ExpiredSessionServiceException) {
+ EventBusProvider.INSTANCE
+ .fireEvent(new SessionExpiredEvent());
+ } else {
+ Log.error("Error downloading table: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
+ caught.printStackTrace();
+
+ }
+
+ @Override
+ public void onSuccess(String link) {
+ Log.debug("Retrieved link: " + link);
+ Window.open(link, itemDescriptionSelected.getName(), "");
+ }
+
+ });
+
+ } else {
+ UtilsGXT3.info("Attention", "Select a Table!");
+ }
+
+ }
/**
*
@@ -306,6 +363,7 @@ public class TabularFld extends AbstractFld implements
HBoxLayoutContainer h = new HBoxLayoutContainer();
h.add(tableDescription, new BoxLayoutData(new Margins()));
h.add(selectButton2, new BoxLayoutData(new Margins()));
+ h.add(downloadButton, new BoxLayoutData(new Margins()));
h.add(cancelButton, new BoxLayoutData(new Margins()));
vp.clear();
vp.add(h);
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/Resources.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/Resources.java
index cb33929..adc9f33 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/Resources.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/Resources.java
@@ -1,23 +1,19 @@
package org.gcube.portlets.user.dataminermanager.client.resources;
-
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
/**
*
- * @author Giancarlo Panichi
- * email: g.panichi@isti.cnr.it
+ * @author Giancarlo Panichi email: g.panichi@isti.cnr.it
*
*/
public interface Resources extends ClientBundle {
-
- @Source("logo.png")
- ImageResource logo();
@Source("logoLittle.png")
ImageResource logoLittle();
-
+
@Source("goBack.png")
ImageResource goBack();
@@ -30,15 +26,9 @@ public interface Resources extends ClientBundle {
@Source("inputSpace.png")
ImageResource inputSpaceIcon();
- @Source("application_side_expand.png")
- ImageResource addOperator();
-
@Source("connector1.png")
ImageResource workflowConnector1();
- @Source("connector2.png")
- ImageResource workflowConnector2();
-
@Source("triangle.png")
ImageResource startComputation();
@@ -60,70 +50,31 @@ public interface Resources extends ClientBundle {
@Source("add.png")
ImageResource add();
- @Source("table.png")
- ImageResource table();
-
- @Source("refresh.png")
- ImageResource refresh();
-
- @Source("details.png")
- ImageResource details();
-
- @Source("tableResult.png")
- ImageResource tableResult();
-
@Source("menuItemComputations.png")
ImageResource menuItemComputations();
-
+
@Source("menuItemExperiment.png")
ImageResource menuItemExperiment();
-
+
@Source("menuItemDataspace.png")
ImageResource menuItemInputspace();
@Source("table.png")
ImageResource fileDownload(); // TODO change
- @Source("ajax-loader.gif")
- ImageResource loader();
-
@Source("ajax-loader-big.gif")
ImageResource loaderBig();
-
+
@Source("ajax-complete.gif")
ImageResource loadingComplete();
-
- @Source("inputSpaceImporter.png")
- ImageResource inputSpaceImporter();
-
- @Source("inputSpaceMonitor.png")
- ImageResource inputSpaceMonitor();
@Source("save.png")
ImageResource save();
- @Source("alert.png")
- ImageResource error();
-
- @Source("arrow_out.png")
- ImageResource expand();
-
- @Source("arrow_in.png")
- ImageResource collapse();
-
- @Source("application_view_list.png")
- ImageResource groupBy();
-
- @Source("map.png")
- ImageResource map();
-
@Source("user_green.png")
ImageResource userPerspective();
-
+
@Source("monitor.png")
ImageResource computationPerspective();
- @Source("arrow_redo.png")
- ImageResource resubmit();
-
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/alert.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/alert.png
deleted file mode 100644
index 5177258..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/alert.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/application_side_expand.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/application_side_expand.png
deleted file mode 100644
index 030cf7c..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/application_side_expand.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/application_view_list.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/application_view_list.png
deleted file mode 100644
index acc30b8..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/application_view_list.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_in.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_in.png
deleted file mode 100644
index 745c651..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_in.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_out.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_out.png
deleted file mode 100644
index 2e9bc42..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_out.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_redo.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_redo.png
deleted file mode 100644
index fdc394c..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/arrow_redo.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/connector2.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/connector2.png
deleted file mode 100644
index 2f77b2f..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/connector2.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/inputSpaceImporter.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/inputSpaceImporter.png
deleted file mode 100644
index 281d218..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/inputSpaceImporter.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/inputSpaceMonitor.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/inputSpaceMonitor.png
deleted file mode 100644
index 9b394e7..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/inputSpaceMonitor.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/logo.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/logo.png
deleted file mode 100644
index ba6819f..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/logo.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/map.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/map.png
deleted file mode 100644
index f90ef25..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/map.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/refresh.png b/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/refresh.png
deleted file mode 100644
index 1f23890..0000000
Binary files a/src/main/java/org/gcube/portlets/user/dataminermanager/client/resources/refresh.png and /dev/null differ
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java
index 85b05e5..f32ec7e 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java
@@ -368,10 +368,7 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements
HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession = SessionUtil.getASLSession(session);
logger.debug("CancelComputation(): " + itemDescription);
- Map properties = StorageUtil.getProperties(
- aslSession.getUsername(), itemDescription.getId());
- logger.debug("Properties: " + properties);
- String compId = properties.get("computation_id");
+ String compId = itemDescription.getName();
if(compId==null){
throw new ServiceException("Computation Id not found!");
} else {
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/smservice/SClient4WPS.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/smservice/SClient4WPS.java
index dc674ec..35604b3 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/smservice/SClient4WPS.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/smservice/SClient4WPS.java
@@ -868,8 +868,7 @@ public class SClient4WPS extends SClient {
.getExecuteResponse().getStatus();
if (statusType == null) {
logger.debug("WPS FAILURE: Status Type is null");
- computationStatus = new ComputationStatus(
- Status.FAILED, 100f);
+ computationStatus = null;
} else {
String failure = statusType.getProcessFailed() == null ? null
@@ -935,9 +934,20 @@ public class SClient4WPS extends SClient {
Status.RUNNING,
statusd);
} else {
- logger.debug("WPS STATUS: Not Started, "
- + statusType
- .getProcessStarted());
+ if (status == -1) {
+ logger.debug("WPS STATUS: Computation cancelled, "
+ + statusType
+ .getProcessStarted());
+ computationStatus = new ComputationStatus(
+ Status.CANCELLED,
+ -1);
+
+ } else {
+
+ logger.debug("WPS STATUS: Not Started, "
+ + statusType
+ .getProcessStarted());
+ }
}
}
}
@@ -1234,10 +1244,10 @@ public class SClient4WPS extends SClient {
}
if (userInputs.isEmpty()) {
- logger.error("Attention no imputs parameters retrieved for this computation: "
+ logger.error("Attention no inputs parameters retrieved for this computation: "
+ computationProperties);
throw new Exception(
- "Attention no imputs parameters retrieved for this computation: "
+ "Attention no inputs parameters retrieved for this computation: "
+ computationProperties);
}
diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java
index 1f6784c..e566c28 100644
--- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java
+++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java
@@ -43,7 +43,7 @@ public class StorageUtil {
public static InputStream getStorageClientInputStream(String url)
throws Exception {
/*
- * try { logger.debug("Get ImputStream from: "+url); SMPUrl smsHome =
+ * try { logger.debug("Get InputStream from: "+url); SMPUrl smsHome =
* new SMPUrl(url); logger.debug("smsHome: [host:" + smsHome.getHost() +
* " path:" + smsHome.getPath() + " ref:" + smsHome.getRef() +
* " userinfo:" + smsHome.getUserInfo() + " ]"); URLConnection uc =
@@ -51,9 +51,9 @@ public class StorageUtil {
* uc.getInputStream(); return is;
*
* } catch (Exception e) {
- * logger.error("Error retrieving imput stream from storage: ", e);
+ * logger.error("Error retrieving input stream from storage: ", e);
* e.printStackTrace(); throw new Exception(
- * "Error retrieving imput stream from storage: " +
+ * "Error retrieving input stream from storage: " +
* e.getLocalizedMessage(), e); }
*/
@@ -150,7 +150,7 @@ public class StorageUtil {
throw new ServiceException("Folder is not valid!");
}
- return getImputStream(user, workSpaceItem);
+ return getInputStream(user, workSpaceItem);
} catch (WorkspaceFolderNotFoundException | InternalErrorException
| HomeNotFoundException | ItemNotFoundException e) {
@@ -169,7 +169,7 @@ public class StorageUtil {
* @return InputStream
* @throws StatAlgoImporterServiceException
*/
- private static InputStream getImputStream(String user, WorkspaceItem wi)
+ private static InputStream getInputStream(String user, WorkspaceItem wi)
throws ServiceException {
InputStream is = null;
try {