diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java
index 03e4029..f241db3 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/StatAlgoImporterController.java
@@ -3,11 +3,12 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client;
import java.util.Date;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.DeleteItemEvent;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveEvent;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveReadyEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.StatAlgoImporterRibbonEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
-import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.project.ProjectManager;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType;
@@ -18,6 +19,7 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsG
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.Constants;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
import com.allen_sauer.gwt.log.client.Log;
@@ -198,11 +200,25 @@ public class StatAlgoImporterController {
}
});
+
+ eventBus.addHandler(InputSaveReadyEvent.TYPE,
+ new InputSaveReadyEvent.InputSaveReadyEventHandler() {
+
+ @Override
+ public void onInputSaveReady(InputSaveReadyEvent event) {
+ Log.debug("Catch InputSaveReadyEvent");
+ doInputSaveReadyCommand(event);
+
+
+ }
+ });
eventBus.fireEvent(new UIStateEvent(UIStateType.START));
}
+
+
private void doMenuCommand(StatAlgoImporterRibbonEvent event) {
StatAlgoImporterRibbonType eventType = event.getStatRunnerRibbonType();
if (eventType == null) {
@@ -216,10 +232,13 @@ public class StatAlgoImporterController {
break;
case PROJECT_OPEN:
break;
- case ALGORITHM_CREATE:
+ case PROJECT_SAVE:
+ projectSaveRequest();
break;
- case ALGORITHM_IMPORT:
- showCodeUploadDialog();
+ case RESOURCE_ADD:
+ showAddResourceDialog();
+ break;
+ case SOFTWARE_CREATE:
break;
case HELP:
break;
@@ -228,11 +247,28 @@ public class StatAlgoImporterController {
}
}
+
+ protected void doInputSaveReadyCommand(InputSaveReadyEvent event) {
+ pm.saveProject(event.getInputVariables());
+
+ }
+
+
+ private void projectSaveRequest() {
+ InputSaveEvent inputSaveEvent=new InputSaveEvent();
+ eventBus.fireEvent(inputSaveEvent);
+ Log.debug("ProjectSaveRequest: "+inputSaveEvent);
+
+ }
private void showCreateProjectDialog() {
pm.createProject();
}
+
+ private void showAddResourceDialog() {
+ pm.addResource();
+ }
private void doMainCodeSetCommand(MainCodeSetEvent event) {
ItemDescription itemDescription = event.getItemDescription();
@@ -250,6 +286,7 @@ public class StatAlgoImporterController {
}
+ @SuppressWarnings("unused")
private void showCodeUploadDialog() {
CodeUploadDialog codeUploadDialog = new CodeUploadDialog(eventBus);
codeUploadDialog.show();
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/DeleteItemEvent.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/DeleteItemEvent.java
index db2e433..f543fff 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/DeleteItemEvent.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/DeleteItemEvent.java
@@ -1,6 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
-import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/InputSaveEvent.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/InputSaveEvent.java
new file mode 100644
index 0000000..6e7ad17
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/InputSaveEvent.java
@@ -0,0 +1,59 @@
+package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+/**
+ * Input Save Event
+ *
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class InputSaveEvent extends
+ GwtEvent {
+
+ public static Type TYPE = new Type();
+
+ public interface InputSaveEventHandler extends EventHandler {
+ void onInputSave(InputSaveEvent event);
+ }
+
+ public interface HasInputSaveEventHandler extends HasHandlers {
+ public HandlerRegistration addInputSaveEventHandler(
+ InputSaveEventHandler handler);
+ }
+
+ public InputSaveEvent() {
+
+ }
+
+ @Override
+ protected void dispatch(InputSaveEventHandler handler) {
+ handler.onInputSave(this);
+ }
+
+ @Override
+ public Type getAssociatedType() {
+ return TYPE;
+ }
+
+ public static Type getType() {
+ return TYPE;
+ }
+
+ public static void fire(HasHandlers source, InputSaveEvent inputSaveEvent) {
+ source.fireEvent(inputSaveEvent);
+ }
+
+ @Override
+ public String toString() {
+ return "InputSaveEvent []";
+ }
+
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/InputSaveReadyEvent.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/InputSaveReadyEvent.java
new file mode 100644
index 0000000..8684ef8
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/InputSaveReadyEvent.java
@@ -0,0 +1,65 @@
+package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
+
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+/**
+ * Input Save Ready Event
+ *
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class InputSaveReadyEvent extends
+ GwtEvent {
+
+ public static Type TYPE = new Type();
+ private InputVariables inputVariables;
+
+ public interface InputSaveReadyEventHandler extends EventHandler {
+ void onInputSaveReady(InputSaveReadyEvent event);
+ }
+
+ public interface HasInputSaveReadyEventHandler extends HasHandlers {
+ public HandlerRegistration addInputSaveReadyEventHandler(
+ InputSaveReadyEventHandler handler);
+ }
+
+ public InputSaveReadyEvent(InputVariables inputVariables) {
+ this.inputVariables = inputVariables;
+ }
+
+ @Override
+ protected void dispatch(InputSaveReadyEventHandler handler) {
+ handler.onInputSaveReady(this);
+ }
+
+ @Override
+ public Type getAssociatedType() {
+ return TYPE;
+ }
+
+ public static Type getType() {
+ return TYPE;
+ }
+
+ public static void fire(HasHandlers source,
+ InputSaveReadyEvent inputSaveReadyEvent) {
+ source.fireEvent(inputSaveReadyEvent);
+ }
+
+ public InputVariables getInputVariables() {
+ return inputVariables;
+ }
+
+ @Override
+ public String toString() {
+ return "InputSaveReadyEvent [inputVariables=" + inputVariables + "]";
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/MainCodeSetEvent.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/MainCodeSetEvent.java
index bb29fd2..bc55dcb 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/MainCodeSetEvent.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/MainCodeSetEvent.java
@@ -1,6 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
-import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java
index 929b118..a9c10b3 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/event/ProjectStatusEvent.java
@@ -1,6 +1,7 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.event;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
@@ -20,7 +21,7 @@ public class ProjectStatusEvent extends
public static Type TYPE = new Type();
private ProjectStatusEventType projectStatusEventType;
- private String projectFolderId;
+ private ItemDescription projectFolder;
public interface ProjectStatusEventHandler extends EventHandler {
void onProjectStatus(ProjectStatusEvent event);
@@ -31,9 +32,9 @@ public class ProjectStatusEvent extends
ProjectStatusEventHandler handler);
}
- public ProjectStatusEvent(ProjectStatusEventType projectStatusEventType,String projectFolderId) {
+ public ProjectStatusEvent(ProjectStatusEventType projectStatusEventType,ItemDescription projectFolder) {
this.projectStatusEventType = projectStatusEventType;
- this.projectFolderId = projectFolderId;
+ this.projectFolder = projectFolder;
}
@Override
@@ -59,16 +60,18 @@ public class ProjectStatusEvent extends
return projectStatusEventType;
}
- public String getProjectFolderId() {
- return projectFolderId;
+ public ItemDescription getProjectFolder() {
+ return projectFolder;
}
@Override
public String toString() {
return "ProjectStatusEvent [projectStatusEventType="
- + projectStatusEventType + ", projectFolderId="
- + projectFolderId + "]";
+ + projectStatusEventType + ", projectFolder=" + projectFolder
+ + "]";
}
+
+
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java
index b13da10..db610fb 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/project/ProjectManager.java
@@ -1,13 +1,18 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.project;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.SessionExpiredEvent;
-import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterServiceAsync;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.ProjectStatusEventType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.type.SessionExpiredType;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterSessionExpiredException;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.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;
@@ -26,7 +31,7 @@ import com.sencha.gxt.core.client.dom.XDOM;
*/
public class ProjectManager {
private EventBus eventBus;
- private String projectFolderId;
+ private ItemDescription projectFolder;
@SuppressWarnings("unused")
private ItemDescription mainCodeDescription;
@@ -56,6 +61,9 @@ public class ProjectManager {
@Override
public void onFailed(Throwable throwable) {
+ Log.error("Error in create project: "
+ + throwable.getLocalizedMessage());
+ UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace();
}
@@ -75,11 +83,103 @@ public class ProjectManager {
wselectDialog.show();
}
+ public void addResource() {
+ List selectableTypes = new ArrayList();
+ selectableTypes.add(ItemType.EXTERNAL_FILE);
+ selectableTypes.add(ItemType.EXTERNAL_IMAGE);
+ selectableTypes.add(ItemType.IMAGE_DOCUMENT);
+ selectableTypes.add(ItemType.DOCUMENT);
+ selectableTypes.add(ItemType.PDF_DOCUMENT);
+
+ List showableTypes = new ArrayList();
+ showableTypes.addAll(Arrays.asList(ItemType.values()));
+
+ WorkspaceExplorerSelectDialog wselectDialog = new WorkspaceExplorerSelectDialog(
+ "Select a Resource", selectableTypes, showableTypes);
+
+ WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
+
+ @Override
+ public void onSelectedItem(Item item) {
+ if (item.getType() == ItemType.EXTERNAL_FILE
+ || item.getType() == ItemType.EXTERNAL_IMAGE
+ || item.getType() == ItemType.IMAGE_DOCUMENT
+ || item.getType() == ItemType.DOCUMENT
+ || item.getType() == ItemType.PDF_DOCUMENT) {
+ String filename = item.getName();
+ if (filename != null && !filename.isEmpty()) {
+ addResourceToProject(item);
+ } else {
+ UtilsGXT3.info("Attention", "Select a valid resource!");
+ }
+
+ } else {
+ UtilsGXT3.info("Attention", "Select a valid resource!");
+ }
+
+ }
+
+ @Override
+ public void onFailed(Throwable throwable) {
+ Log.error("Error in add resource: "
+ + throwable.getLocalizedMessage());
+ UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
+ throwable.printStackTrace();
+ }
+
+ @Override
+ public void onAborted() {
+
+ }
+
+ @Override
+ public void onNotValidSelection() {
+ UtilsGXT3.info("Attention", "Select a valid resource!");
+ }
+ };
+
+ wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler);
+ wselectDialog.setZIndex(XDOM.getTopZIndex());
+ wselectDialog.show();
+ }
+
+ protected void addResourceToProject(Item item) {
+ Log.debug("Add Resource To Project Item selected: " + item);
+ ItemDescription itemDescription = new ItemDescription(item.getId(),
+ item.getName(), item.getOwner(), item.getPath(), item.getType()
+ .name());
+ StatAlgoImporterServiceAsync.INSTANCE.addResourceToProject(
+ itemDescription, new AsyncCallback() {
+
+ @Override
+ public void onSuccess(Void result) {
+ fireProjectStatusAddResourceEvent();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof StatAlgoImporterSessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error in add resource to project: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
+ caught.printStackTrace();
+
+ }
+ });
+
+ }
+
protected void createProjectOnServer(Item item) {
- Log.debug("Item selected: " + item);
- projectFolderId = item.getId();
+ Log.debug("Create Project Item selected: " + item);
+ projectFolder = new ItemDescription(item.getId(), item.getName(),
+ item.getOwner(), item.getPath(), item.getType().name());
StatAlgoImporterServiceAsync.INSTANCE.createProjectOnWorkspace(
- item.getId(), new AsyncCallback() {
+ projectFolder, new AsyncCallback() {
@Override
public void onSuccess(Void result) {
@@ -89,18 +189,55 @@ public class ProjectManager {
@Override
public void onFailure(Throwable caught) {
- Log.debug(caught.getLocalizedMessage());
+ if (caught instanceof StatAlgoImporterSessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error in create project: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
caught.printStackTrace();
}
});
}
- public void setMainCode(ItemDescription mainCodeDescription) {
- this.mainCodeDescription = mainCodeDescription;
- Log.debug("Main: " + mainCodeDescription);
- StatAlgoImporterServiceAsync.INSTANCE.setMainCode(
- mainCodeDescription.getId(), new AsyncCallback() {
+ public void saveProject(InputVariables inputVariables) {
+ Log.debug("Save Project: " + inputVariables);
+
+ StatAlgoImporterServiceAsync.INSTANCE.saveProject(inputVariables,
+ new AsyncCallback() {
+
+ @Override
+ public void onSuccess(Void result) {
+ UtilsGXT3.info("Save",
+ "Project saved!");
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof StatAlgoImporterSessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error on save project: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
+ caught.printStackTrace();
+
+ }
+ });
+ }
+
+ public void setMainCode(ItemDescription itemDescription) {
+ this.mainCodeDescription = itemDescription;
+ Log.debug("Set Main Code: " + itemDescription);
+ StatAlgoImporterServiceAsync.INSTANCE.setMainCode(itemDescription,
+ new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
@@ -119,29 +256,77 @@ public class ProjectManager {
@Override
public void onSuccess(Void result) {
- fireProjectStatusEventUpdate();
+ fireProjectStatusUpdateEvent();
}
});
}
public void deleteItem(ItemDescription itemDescription) {
-
+ StatAlgoImporterServiceAsync.INSTANCE.deleteResourceOnProject(itemDescription,
+ new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof StatAlgoImporterSessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error deleting resourse: "
+ + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ }
+ caught.printStackTrace();
+
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ fireProjectStatusDeleteEvent();
+ }
+ });
+
}
+
+
protected void fireProjectStatusOpenEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
- ProjectStatusEventType.OPEN, projectFolderId);
+ ProjectStatusEventType.OPEN, projectFolder);
eventBus.fireEvent(projectStatusEvent);
- Log.debug("ProjectStatusEvent fired");
+ Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
}
-
- protected void fireProjectStatusEventUpdate() {
+
+ protected void fireProjectStatusSaveProjectEvent() {
ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
- ProjectStatusEventType.UPDATE, projectFolderId);
+ ProjectStatusEventType.SAVE, projectFolder);
eventBus.fireEvent(projectStatusEvent);
- Log.debug("ProjectStatusEvent fired");
+ Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
+ }
+
+
+ protected void fireProjectStatusAddResourceEvent() {
+ ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
+ ProjectStatusEventType.ADD_RESOURCE, projectFolder);
+ eventBus.fireEvent(projectStatusEvent);
+ Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
+ }
+
+ protected void fireProjectStatusDeleteEvent() {
+ // TODO Auto-generated method stub
+ ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
+ ProjectStatusEventType.DELETE_RESOURCE, projectFolder);
+ eventBus.fireEvent(projectStatusEvent);
+ Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
+ }
+
+ protected void fireProjectStatusUpdateEvent() {
+ ProjectStatusEvent projectStatusEvent = new ProjectStatusEvent(
+ ProjectStatusEventType.UPDATE, projectFolder);
+ eventBus.fireEvent(projectStatusEvent);
+ Log.debug("ProjectStatusEvent fired! "+projectStatusEvent);
}
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java
index 91ad7ef..f0ed591 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/StatAlgoImporterResources.java
@@ -44,6 +44,9 @@ public interface StatAlgoImporterResources extends ClientBundle {
@Source("reload_24.png")
ImageResource reload24();
+
+ @Source("reload_16.png")
+ ImageResource reload16();
@Source("input_16.png")
ImageResource input16();
@@ -74,6 +77,12 @@ public interface StatAlgoImporterResources extends ClientBundle {
@Source("project-open_24.png")
ImageResource projectOpen24();
+
+ @Source("project-save_32.png")
+ ImageResource projectSave32();
+
+ @Source("project-save_24.png")
+ ImageResource projectSave24();
@Source("add_24.png")
ImageResource add24();
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-save_24.png b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-save_24.png
new file mode 100644
index 0000000..e223dd9
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-save_24.png differ
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-save_32.png b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-save_32.png
new file mode 100644
index 0000000..1a79d07
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/project-save_32.png differ
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/reload_16.png b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/reload_16.png
new file mode 100644
index 0000000..2f7f094
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/resource/reload_16.png differ
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBar.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBar.java
index d4c46b6..34d9c20 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBar.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBar.java
@@ -41,7 +41,8 @@ public class HomeToolBar {
//Home
private TextButton btnCreateProject;
private TextButton btnOpenProject;
-
+ private TextButton btnSaveProject;
+
//Resources
private TextButton btnAddResource;
@@ -115,7 +116,7 @@ public class HomeToolBar {
btnOpenProject.setIconAlign(IconAlign.LEFT);
btnOpenProject.setArrowAlign(ButtonArrowAlign.BOTTOM);
btnOpenProject.setToolTip(msgs.btnOpenProjectToolTip());
-
+ btnOpenProject.getElement().setMargins(new Margins(0, 4, 0, 0));
btnOpenProject.addSelectHandler(new SelectHandler() {
public void onSelect(SelectEvent event) {
@@ -127,6 +128,27 @@ public class HomeToolBar {
homeLayout.setWidget(0, 1, btnOpenProject);
homeLayout.getFlexCellFormatter().setRowSpan(0, 1, 2);
+
+ btnSaveProject = new TextButton(msgs.btnSaveProject(),
+ StatAlgoImporterResources.INSTANCE.projectSave24());
+ btnSaveProject.setId("btnSaveProject");
+ btnSaveProject.setScale(ButtonScale.SMALL);
+ btnSaveProject.setIconAlign(IconAlign.LEFT);
+ btnSaveProject.setArrowAlign(ButtonArrowAlign.BOTTOM);
+ btnSaveProject.setToolTip(msgs.btnSaveProjectToolTip());
+
+ btnSaveProject.addSelectHandler(new SelectHandler() {
+
+ public void onSelect(SelectEvent event) {
+ eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
+ StatAlgoImporterRibbonType.PROJECT_SAVE));
+ }
+ });
+
+ homeLayout.setWidget(0, 2, btnSaveProject);
+ homeLayout.getFlexCellFormatter().setRowSpan(0, 2, 2);
+
+
// Resources
ButtonGroup resourcesGroup = new ButtonGroup();
resourcesGroup.setId("Resource");
@@ -148,7 +170,7 @@ public class HomeToolBar {
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
- StatAlgoImporterRibbonType.ALGORITHM_IMPORT));
+ StatAlgoImporterRibbonType.RESOURCE_ADD));
}
});
@@ -177,7 +199,7 @@ public class HomeToolBar {
public void onSelect(SelectEvent event) {
eventBus.fireEvent(new StatAlgoImporterRibbonEvent(
- StatAlgoImporterRibbonType.ALGORITHM_CREATE));
+ StatAlgoImporterRibbonType.SOFTWARE_CREATE));
}
});
@@ -320,6 +342,7 @@ public class HomeToolBar {
case START:
btnCreateProject.enable();
btnOpenProject.enable();
+ btnSaveProject.enable();
btnAddResource.enable();
btnCreateSoftware.enable();
btnHelp.enable();
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBarMessages.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBarMessages.java
index bd863f4..eea1913 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBarMessages.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/ribbon/HomeToolBarMessages.java
@@ -44,6 +44,12 @@ public interface HomeToolBarMessages extends Messages {
@DefaultMessage("Open Project")
String btnOpenProjectToolTip();
+ @DefaultMessage("Save")
+ String btnSaveProject();
+
+ @DefaultMessage("Save Project")
+ String btnSaveProjectToolTip();
+
//
@DefaultMessage("Resource")
String resourceGroupHeadingText();
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterService.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterService.java
index 8a05e9c..936bfe7 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterService.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterService.java
@@ -5,7 +5,9 @@ import java.util.ArrayList;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@@ -40,10 +42,20 @@ public interface StatAlgoImporterService extends RemoteService {
public ArrayList getCode()
throws StatAlgoImporterServiceException;
- public void createProjectOnWorkspace(String itemId)
+ public void createProjectOnWorkspace(ItemDescription itemDescription)
throws StatAlgoImporterServiceException;
+
//
- public void setMainCode(String itemId)
+ public void setMainCode(ItemDescription itemDescription)
+ throws StatAlgoImporterServiceException;
+
+ public void addResourceToProject(ItemDescription itemDescription)
+ throws StatAlgoImporterServiceException;
+
+ public void deleteResourceOnProject(ItemDescription itemDescription)
+ throws StatAlgoImporterServiceException;
+
+ public void saveProject(InputVariables inputVariables)
throws StatAlgoImporterServiceException;
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterServiceAsync.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterServiceAsync.java
index c3dd9a8..a577745 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/rpc/StatAlgoImporterServiceAsync.java
@@ -7,7 +7,9 @@ import java.util.ArrayList;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -33,9 +35,18 @@ public interface StatAlgoImporterServiceAsync {
void getCode(AsyncCallback> callback);
- void createProjectOnWorkspace(String itemId,
+ void createProjectOnWorkspace(ItemDescription itemDescription,
AsyncCallback callback);
- void setMainCode(String itemId, AsyncCallback callback);
+ void setMainCode(ItemDescription itemDescription, AsyncCallback callback);
+
+ void addResourceToProject(ItemDescription itemDescription,
+ AsyncCallback asyncCallback);
+
+ void saveProject(InputVariables inputVariables,
+ AsyncCallback asyncCallback);
+
+ void deleteResourceOnProject(ItemDescription itemDescription,
+ AsyncCallback asyncCallback);
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/explorer/ExplorerProjectPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/explorer/ExplorerProjectPanel.java
index 7620d6f..97a4f12 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/explorer/ExplorerProjectPanel.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/explorer/ExplorerProjectPanel.java
@@ -4,9 +4,9 @@ import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.Delete
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.MainCodeSetEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
-import org.gcube.portlets.user.statisticalalgorithmsimporter.client.maindata.ItemDescription;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.resource.StatAlgoImporterResources;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.utils.UtilsGXT3;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
@@ -22,13 +22,16 @@ import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.ContentPanel;
+import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.AccordionLayoutContainer.AccordionLayoutAppearance;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
+import com.sencha.gxt.widget.core.client.event.DialogHideEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
+import com.sencha.gxt.widget.core.client.event.DialogHideEvent.DialogHideHandler;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
@@ -46,6 +49,7 @@ public class ExplorerProjectPanel extends ContentPanel {
private MultipleDNDUpload dnd;
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
private TextButton btnDelete;
+ private TextButton btnReload;
public ExplorerProjectPanel(EventBus eventBus) {
super();
@@ -123,10 +127,13 @@ public class ExplorerProjectPanel extends ContentPanel {
+ event.toString());
switch (event.getProjectStatusEventType()) {
case OPEN:
+ case UPDATE:
+ case SAVE:
+ case ADD_RESOURCE:
+ case DELETE_RESOURCE:
create(event);
break;
- case UPDATE:
- create(event);
+ case MAIN_CODE_SET:
break;
default:
break;
@@ -137,7 +144,7 @@ public class ExplorerProjectPanel extends ContentPanel {
try {
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
- event.getProjectFolderId(), false);
+ event.getProjectFolder().getId(), false);
WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() {
@Override
@@ -176,7 +183,7 @@ public class ExplorerProjectPanel extends ContentPanel {
// DND
dnd = new MultipleDNDUpload();
- dnd.setParameters(event.getProjectFolderId(), UPLOAD_TYPE.File);
+ dnd.setParameters(event.getProjectFolder().getId(), UPLOAD_TYPE.File);
dnd.addUniqueContainer(vResourcesExplorerContainer);
WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() {
@@ -230,7 +237,7 @@ public class ExplorerProjectPanel extends ContentPanel {
});
btnDelete = new TextButton("Delete");
- btnDelete.setIcon(StatAlgoImporterResources.INSTANCE.add16());
+ btnDelete.setIcon(StatAlgoImporterResources.INSTANCE.delete16());
btnDelete.setScale(ButtonScale.SMALL);
btnDelete.setIconAlign(IconAlign.LEFT);
btnDelete.setToolTip("Delete");
@@ -244,11 +251,30 @@ public class ExplorerProjectPanel extends ContentPanel {
});
+
+ btnReload = new TextButton("Reload");
+ btnReload.setIcon(StatAlgoImporterResources.INSTANCE.reload16());
+ btnReload.setScale(ButtonScale.SMALL);
+ btnReload.setIconAlign(IconAlign.LEFT);
+ btnReload.setToolTip("Reload");
+ btnReload.addSelectHandler(new SelectHandler() {
+
+ @Override
+ public void onSelect(SelectEvent event) {
+ reloadWSResourceExplorerPanel(event);
+ }
+
+
+
+ });
+
ToolBar toolBar = new ToolBar();
toolBar.add(btnSetMain, new BoxLayoutData(new Margins(0)));
+ toolBar.add(btnReload, new BoxLayoutData(new Margins(0)));
+ toolBar.add(btnDelete, new BoxLayoutData(new Margins(0)));
VerticalLayoutContainer v = new VerticalLayoutContainer();
@@ -263,6 +289,13 @@ public class ExplorerProjectPanel extends ContentPanel {
}
}
+ protected void reloadWSResourceExplorerPanel(SelectEvent event) {
+ if(wsResourcesExplorerPanel!=null){
+ wsResourcesExplorerPanel.refreshRootFolderView();
+ }
+
+ }
+
private void setMainCode(SelectEvent event) {
Log.debug("Set Main Code");
if (selectedItem != null
@@ -275,21 +308,39 @@ public class ExplorerProjectPanel extends ContentPanel {
}
private void deleteItem(SelectEvent event) {
- ItemDescription itemDescription = new ItemDescription(
- selectedItem.getId(), selectedItem.getName(),
- selectedItem.getOwner(), selectedItem.getPath());
- DeleteItemEvent deleteItemEvent = new DeleteItemEvent(
- itemDescription);
- eventBus.fireEvent(deleteItemEvent);
- Log.debug("Fired: " + deleteItemEvent);
-
+ final ConfirmMessageBox mb = new ConfirmMessageBox("Delete",
+ "Would you like to delete this resource?");
+ mb.addDialogHideHandler(new DialogHideHandler() {
+
+ @Override
+ public void onDialogHide(DialogHideEvent event) {
+ switch (event.getHideButton()) {
+ case NO:
+ break;
+ case YES:
+ ItemDescription itemDescription = new ItemDescription(
+ selectedItem.getId(), selectedItem.getName(),
+ selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
+ DeleteItemEvent deleteItemEvent = new DeleteItemEvent(
+ itemDescription);
+ eventBus.fireEvent(deleteItemEvent);
+ Log.debug("Fired: " + deleteItemEvent);
+ break;
+ default:
+ break;
+ }
+
+ }
+ });
+ mb.setWidth(300);
+ mb.show();
}
private void loadData() {
ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
- selectedItem.getOwner(), selectedItem.getPath());
+ selectedItem.getOwner(), selectedItem.getPath(), selectedItem.getType().name());
MainCodeSetEvent mainCodeSetEvent = new MainCodeSetEvent(
itemDescription);
eventBus.fireEvent(mainCodeSetEvent);
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java
index 4dcd58e..d00386c 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/EnvironmentVariablesPanel.java
@@ -56,6 +56,7 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
*/
public class EnvironmentVariablesPanel extends ContentPanel {
+ @SuppressWarnings("unused")
private EventBus eventBus;
private ListStore storeEnvironmentVariable;
private Grid gridEnvironmentVariable;
@@ -136,13 +137,13 @@ public class EnvironmentVariablesPanel extends ContentPanel {
storeEnvironmentVariable = new ListStore(
props.id());
- /*ArrayList list = new ArrayList<>();
- for (int i = 0; i < 10; i++) {
- list.add(new EnvironmentVariables(i, "Test" + i, "Desc",
- "defaultValue", InputType.STRING));
- }
-
- storeEnvironmentVariable.addAll(list);*/
+ /*
+ * ArrayList list = new ArrayList<>(); for (int i
+ * = 0; i < 10; i++) { list.add(new EnvironmentVariables(i, "Test" + i,
+ * "Desc", "defaultValue", InputType.STRING)); }
+ *
+ * storeEnvironmentVariable.addAll(list);
+ */
final GridSelectionModel sm = new GridSelectionModel();
sm.setSelectionMode(SelectionMode.SINGLE);
@@ -156,7 +157,6 @@ public class EnvironmentVariablesPanel extends ContentPanel {
gridEnvironmentVariable.getView().setAutoFill(true);
gridEnvironmentVariable.setBorders(false);
gridEnvironmentVariable.setColumnReordering(false);
-
/*
* GridDragSource ds = new
@@ -196,8 +196,8 @@ public class EnvironmentVariablesPanel extends ContentPanel {
gridEnvironmentVariableEditing.addEditor(nameColumn, new TextField());
gridEnvironmentVariableEditing.addEditor(descriptionColumn,
new TextField());
- gridEnvironmentVariableEditing
- .addEditor(inputTypeColumn, comboInputType);
+ gridEnvironmentVariableEditing.addEditor(inputTypeColumn,
+ comboInputType);
gridEnvironmentVariableEditing.addEditor(defaultValueColumn,
new TextField());
@@ -226,8 +226,8 @@ public class EnvironmentVariablesPanel extends ContentPanel {
storeEnvironmentVariable.remove(rowIndex);
storeEnvironmentVariable.commitChanges();
- gridEnvironmentVariableEditing.getCancelButton()
- .setVisible(true);
+ gridEnvironmentVariableEditing.getCancelButton().setVisible(
+ true);
btnAdd.setEnabled(true);
if (addStatus) {
addStatus = false;
@@ -291,13 +291,13 @@ public class EnvironmentVariablesPanel extends ContentPanel {
VerticalLayoutContainer vlc = new VerticalLayoutContainer();
vlc.setAdjustForScroll(false);
vlc.setScrollMode(ScrollMode.NONE);
-
+
vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
vlc.add(gridEnvironmentVariable, new VerticalLayoutData(1, 1,
new Margins(0)));
-
+
add(vlc, new MarginData(new Margins(0)));
-
+
}
private void editingBeforeStart(
@@ -318,7 +318,7 @@ public class EnvironmentVariablesPanel extends ContentPanel {
seq, "", "", "", InputType.STRING);
Log.debug("New Environment Variable: " + newEnvironmentVariable);
gridEnvironmentVariableEditing.cancelEditing();
- addStatus = true;
+ addStatus = true;
gridEnvironmentVariableEditing.getCancelButton().setVisible(false);
storeEnvironmentVariable.add(newEnvironmentVariable);
int row = storeEnvironmentVariable.indexOf(newEnvironmentVariable);
@@ -337,4 +337,10 @@ public class EnvironmentVariablesPanel extends ContentPanel {
}
+ public ArrayList getEnvironmentVariables() {
+ ArrayList listEnviromentVarialbles = new ArrayList<>(
+ gridEnvironmentVariable.getStore().getAll());
+ return listEnviromentVarialbles;
+ }
+
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java
index 8fe620a..f163f3d 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariablePanel.java
@@ -1,5 +1,6 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.ProjectStatusEvent;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.UIStateEvent;
@@ -28,7 +29,7 @@ public class InputVariablePanel extends ContentPanel {
bindToEvents();
}
-
+
public InputVariablePanel(EventBus eventBus,
AccordionLayoutAppearance appearance) {
super(appearance);
@@ -48,7 +49,7 @@ public class InputVariablePanel extends ContentPanel {
setBorders(true);
setHeadingText("Input");
forceLayoutOnResize = true;
-
+
}
protected void bindToEvents() {
@@ -66,10 +67,28 @@ public class InputVariablePanel extends ContentPanel {
@Override
public void onProjectStatus(ProjectStatusEvent event) {
+ Log.debug("Catch ProjectStatusEvent");
manageProjectStatusEvents(event);
}
});
+
+ eventBus.addHandler(InputSaveEvent.TYPE,
+ new InputSaveEvent.InputSaveEventHandler() {
+
+ @Override
+ public void onInputSave(InputSaveEvent event) {
+ Log.debug("Catch InputSaveEvent");
+ manageInputSaveEvents(event);
+
+ }
+ });
+
+ }
+
+ protected void manageInputSaveEvents(InputSaveEvent event) {
+ inputVariableTabPanel.saveInput();
+
}
protected void manageUIStateEvents(UIStateEvent event) {
@@ -96,18 +115,22 @@ public class InputVariablePanel extends ContentPanel {
case UPDATE:
updatePanel();
break;
+ case ADD_RESOURCE:
+ break;
+ case MAIN_CODE_SET:
+ break;
default:
break;
}
}
- private void create(){
+ private void create() {
inputVariableTabPanel = new InputVariableTabPanel(eventBus, this);
add(inputVariableTabPanel);
startPanel();
forceLayout();
}
-
+
/*
* private void closePanelOnly() { collapse(); disable(); state =
* InputVariablePanelState.CLOSED; }
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java
index 61bc3a5..1939b7d 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/InputVariableTabPanel.java
@@ -1,5 +1,8 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.client.tools.input;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.client.event.InputSaveReadyEvent;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
+
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
@@ -77,6 +80,25 @@ public class InputVariableTabPanel extends TabPanel {
}
}
+ public void saveInput() {
+ InputVariables inputVariables = new InputVariables();
+ if (enviromentVariablesPanel != null) {
+ inputVariables.setListEnvironmentVariables(enviromentVariablesPanel
+ .getEnvironmentVariables());
+ }
+
+ if (selectedRowsPanel != null) {
+ inputVariables.setListSelectedRows(selectedRowsPanel
+ .getSelectedRows());
+ }
+
+ InputSaveReadyEvent inputSaveReadyEvent = new InputSaveReadyEvent(
+ inputVariables);
+ eventBus.fireEvent(inputSaveReadyEvent);
+ Log.debug("Fired InputSaveReadyEvent");
+
+ }
+
// Add
private void addSelectedRowsPanel() {
TabItemConfig selectedRowsPanelItemConf = new TabItemConfig(
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java
index 722f739..4a62c79 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/tools/input/SelectedRowsPanel.java
@@ -55,9 +55,10 @@ import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
*/
public class SelectedRowsPanel extends ContentPanel {
+ @SuppressWarnings("unused")
private EventBus eventBus;
private ListStore storeEnvironmentVariable;
- private Grid gridEnvironmentVariable;
+ private Grid gridSelectedRows;
private ListStore storeComboInputType;
private ComboBox comboInputType;
private GridRowEditing gridEnvironmentVariableEditing;
@@ -146,15 +147,15 @@ public class SelectedRowsPanel extends ContentPanel {
final GridSelectionModel sm = new GridSelectionModel();
sm.setSelectionMode(SelectionMode.SINGLE);
- gridEnvironmentVariable = new Grid(
+ gridSelectedRows = new Grid(
storeEnvironmentVariable, columns);
- gridEnvironmentVariable.setSelectionModel(sm);
- gridEnvironmentVariable.getView().setStripeRows(true);
- gridEnvironmentVariable.getView().setColumnLines(true);
- gridEnvironmentVariable.getView().setAutoExpandColumn(nameColumn);
- gridEnvironmentVariable.getView().setAutoFill(true);
- gridEnvironmentVariable.setBorders(false);
- gridEnvironmentVariable.setColumnReordering(false);
+ gridSelectedRows.setSelectionModel(sm);
+ gridSelectedRows.getView().setStripeRows(true);
+ gridSelectedRows.getView().setColumnLines(true);
+ gridSelectedRows.getView().setAutoExpandColumn(nameColumn);
+ gridSelectedRows.getView().setAutoFill(true);
+ gridSelectedRows.setBorders(false);
+ gridSelectedRows.setColumnReordering(false);
/*
@@ -191,7 +192,7 @@ public class SelectedRowsPanel extends ContentPanel {
addHandlersForComboInputType(inputTypePropertiesCombo.label());
gridEnvironmentVariableEditing = new GridRowEditing(
- gridEnvironmentVariable);
+ gridSelectedRows);
gridEnvironmentVariableEditing.addEditor(nameColumn, new TextField());
gridEnvironmentVariableEditing.addEditor(descriptionColumn,
new TextField());
@@ -291,7 +292,7 @@ public class SelectedRowsPanel extends ContentPanel {
vlc.setScrollMode(ScrollMode.NONE);
vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
- vlc.add(gridEnvironmentVariable, new VerticalLayoutData(1, 1,
+ vlc.add(gridSelectedRows, new VerticalLayoutData(1, 1,
new Margins(0)));
add(vlc, new MarginData(new Margins(0)));
@@ -334,5 +335,12 @@ public class SelectedRowsPanel extends ContentPanel {
public void update() {
}
+
+ public ArrayList getSelectedRows() {
+ ArrayList listEnviromentVarialbles = new ArrayList<>(
+ gridSelectedRows.getStore().getAll());
+ return listEnviromentVarialbles;
+ }
+
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java
index 007e7ff..3d397e5 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/ProjectStatusEventType.java
@@ -8,6 +8,10 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type;
*/
public enum ProjectStatusEventType {
OPEN,
- MAINCODESET,
- UPDATE;
+ MAIN_CODE_SET,
+ UPDATE,
+ ADD_RESOURCE,
+ DELETE_RESOURCE,
+ SAVE;
+
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java
index 953dd97..1ac3ecf 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/client/type/StatAlgoImporterRibbonType.java
@@ -9,7 +9,8 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.client.type;
public enum StatAlgoImporterRibbonType {
PROJECT_CREATE,
PROJECT_OPEN,
- ALGORITHM_IMPORT,
- ALGORITHM_CREATE,
+ PROJECT_SAVE,
+ RESOURCE_ADD,
+ SOFTWARE_CREATE,
HELP;
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java
index eb238f9..f6960e8 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/StatAlgoImporterServiceImpl.java
@@ -8,13 +8,17 @@ import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.portlets.user.statisticalalgorithmsimporter.client.rpc.StatAlgoImporterService;
import org.gcube.portlets.user.statisticalalgorithmsimporter.server.file.CodeReader;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.FilesStorage;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage.ProjectArchiver;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.code.CodeData;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.file.FileUploadMonitor;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.InputVariables;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.MainCode;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.ProjectFolder;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.session.UserInfo;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -110,13 +114,12 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
throws StatAlgoImporterServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
- ASLSession aslSession=SessionUtil.getAslSession(session);
+ ASLSession aslSession = SessionUtil.getAslSession(session);
logger.debug("getCode()");
- Project projectSession = SessionUtil
- .getProjectSession(session);
+ Project projectSession = SessionUtil.getProjectSession(session);
if (projectSession != null) {
- CodeReader codeFileReader = new CodeReader(
- projectSession, aslSession);
+ CodeReader codeFileReader = new CodeReader(projectSession,
+ aslSession);
ArrayList codeList = codeFileReader.getCodeList();
for (CodeData codeData : codeList) {
logger.debug("" + codeData.getId() + " "
@@ -143,17 +146,16 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
*
*/
@Override
- public void createProjectOnWorkspace(String itemId)
+ public void createProjectOnWorkspace(ItemDescription itemDescription)
throws StatAlgoImporterServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
SessionUtil.getAslSession(session);
logger.debug("createProjectOnWorkspace()");
- ProjectFolder projectFolder=new ProjectFolder(itemId);
+ ProjectFolder projectFolder = new ProjectFolder(itemDescription);
Project projectSession = new Project(projectFolder);
SessionUtil.setProjectSession(session, projectSession);
-
-
+
return;
} catch (StatAlgoImporterServiceException e) {
e.printStackTrace();
@@ -167,32 +169,131 @@ public class StatAlgoImporterServiceImpl extends RemoteServiceServlet implements
}
@Override
- public void setMainCode(String itemId)
+ public void setMainCode(ItemDescription itemDescription)
throws StatAlgoImporterServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
SessionUtil.getAslSession(session);
logger.debug("SetMainCode()");
- Project project = SessionUtil
- .getProjectSession(session);
+ Project project = SessionUtil.getProjectSession(session);
if (project != null) {
- project.setMainCode(new MainCode(itemId));
+ project.setMainCode(new MainCode(itemDescription));
SessionUtil.setProjectSession(session, project);
} else {
throw new StatAlgoImporterServiceException("No project open!");
}
-
-
+
return;
} catch (StatAlgoImporterServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
- logger.error(
- "setMainCode(): " + e.getLocalizedMessage(), e);
+ logger.error("setMainCode(): " + e.getLocalizedMessage(), e);
+ e.printStackTrace();
+ throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
+ }
+
+ }
+
+ @Override
+ public void addResourceToProject(ItemDescription itemDescription)
+ throws StatAlgoImporterServiceException {
+ try {
+ HttpSession session = this.getThreadLocalRequest().getSession();
+ ASLSession aslSession = SessionUtil.getAslSession(session);
+ logger.debug("addResourceToProject(): " + itemDescription);
+ if (itemDescription == null || itemDescription.getId()==null) {
+ throw new StatAlgoImporterServiceException(
+ "Add resource to project is failed, invalid resource: "
+ + itemDescription);
+ }
+
+ Project project = SessionUtil.getProjectSession(session);
+ if (project != null && project.getProjectFolder() != null
+ && project.getProjectFolder().getItemDescription() != null) {
+ FilesStorage fileStorage = new FilesStorage();
+ fileStorage.copyItemOnFolder(aslSession.getUsername(),
+ itemDescription.getId(), project.getProjectFolder()
+ .getItemDescription().getId());
+ } else {
+ throw new StatAlgoImporterServiceException("No project open!");
+ }
+
+ return;
+ } catch (StatAlgoImporterServiceException e) {
+ e.printStackTrace();
+ throw e;
+ } catch (Throwable e) {
+ logger.error("addResourceToProject(): " + e.getLocalizedMessage(),
+ e);
+ e.printStackTrace();
+ throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
+ }
+
+ }
+
+ @Override
+ public void deleteResourceOnProject(ItemDescription itemDescription)
+ throws StatAlgoImporterServiceException {
+ try {
+ HttpSession session = this.getThreadLocalRequest().getSession();
+ ASLSession aslSession = SessionUtil.getAslSession(session);
+ logger.debug("deleteResourceOnProject(): " + itemDescription);
+ if (itemDescription == null || itemDescription.getId()==null) {
+ throw new StatAlgoImporterServiceException(
+ "Delete resource on project is failed, invalid resource: "
+ + itemDescription);
+ }
+
+ Project project = SessionUtil.getProjectSession(session);
+ if (project != null) {
+ FilesStorage fileStorage = new FilesStorage();
+ fileStorage.deleteItemOnFolder(aslSession.getUsername(),
+ itemDescription.getId());
+ } else {
+ throw new StatAlgoImporterServiceException("No project open!");
+ }
+
+ return;
+ } catch (StatAlgoImporterServiceException e) {
+ e.printStackTrace();
+ throw e;
+ } catch (Throwable e) {
+ logger.error("deleteResourceOnProject(): " + e.getLocalizedMessage(),
+ e);
e.printStackTrace();
throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
}
}
+
+ @Override
+ public void saveProject(InputVariables inputVariables)
+ throws StatAlgoImporterServiceException {
+ try {
+ HttpSession session = this.getThreadLocalRequest().getSession();
+ ASLSession aslSession=SessionUtil.getAslSession(session);
+ logger.debug("saveProject():"+inputVariables);
+ Project project = SessionUtil.getProjectSession(session);
+ if (project != null) {
+ project.setInputVariable(inputVariables);
+ SessionUtil.setProjectSession(session, project);
+ ProjectArchiver.archive(project, aslSession);
+ } else {
+ throw new StatAlgoImporterServiceException("No project open!");
+ }
+
+ return;
+ } catch (StatAlgoImporterServiceException e) {
+ e.printStackTrace();
+ throw e;
+ } catch (Throwable e) {
+ logger.error("saveProject(): " + e.getLocalizedMessage(), e);
+ e.printStackTrace();
+ throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
+ }
+
+ }
+
+
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/file/CodeReader.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/file/CodeReader.java
index cb55bc6..8055eb8 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/file/CodeReader.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/file/CodeReader.java
@@ -32,13 +32,17 @@ public class CodeReader {
throws StatAlgoImporterServiceException {
try {
- if (projectSession == null || projectSession.getMainCode() == null
- || projectSession.getMainCode().getItemId() == null) {
+ if (projectSession == null
+ || projectSession.getMainCode() == null
+ || projectSession.getMainCode().getItemDescription() == null
+ || projectSession.getMainCode().getItemDescription()
+ .getId() == null) {
throw new StatAlgoImporterServiceException(
"Project hasn't a valid main set!");
}
- String itemId = projectSession.getMainCode().getItemId();
+ String itemId = projectSession.getMainCode().getItemDescription()
+ .getId();
code = new ArrayList();
FilesStorage filesStorage = new FilesStorage();
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java
index c4364c2..2472964 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/FilesStorage.java
@@ -8,8 +8,12 @@ import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
import org.gcube.common.homelibrary.home.workspace.Workspace;
import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
+import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
+import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
+import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException;
+import org.gcube.common.homelibrary.home.workspace.exceptions.WrongItemTypeException;
import org.gcube.contentmanager.storageclient.model.protocol.smp.SMPUrl;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.slf4j.Logger;
@@ -24,9 +28,91 @@ import org.slf4j.LoggerFactory;
public class FilesStorage {
+ private static final String STATISTICAL_ALGORITHM_PROJECT_MIMETYPE = "text/xml";
+ private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION = "Statistical Algorithm Project File";
+ private static final String STATISTICAL_ALGORITHM_PROJECT_FILE_NAME = "stat_algo.project";
+
public static final Logger logger = LoggerFactory
.getLogger(FilesStorage.class);
+ public void copyItemOnFolder(String user, String itemId, String folderId)
+ throws StatAlgoImporterServiceException {
+ Workspace ws;
+ try {
+ ws = HomeLibrary.getUserWorkspace(user);
+
+ WorkspaceItem workSpaceItem = ws.getItem(folderId);
+ if (!workSpaceItem.isFolder()) {
+ throw new StatAlgoImporterServiceException(
+ "Destination is not a folder!");
+ }
+
+ ws.copy(itemId, folderId);
+
+ return;
+ } catch (WrongDestinationException | ItemAlreadyExistException
+ | InsufficientPrivilegesException
+ | WorkspaceFolderNotFoundException | InternalErrorException
+ | HomeNotFoundException | ItemNotFoundException e) {
+ e.printStackTrace();
+ throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
+
+ }
+ }
+
+ public void deleteItemOnFolder(String user, String itemId)
+ throws StatAlgoImporterServiceException {
+ Workspace ws;
+ try {
+ ws = HomeLibrary.getUserWorkspace(user);
+
+ ws.removeItems(itemId);
+
+ return;
+ } catch (InsufficientPrivilegesException
+ | WorkspaceFolderNotFoundException | InternalErrorException
+ | HomeNotFoundException | ItemNotFoundException e) {
+ e.printStackTrace();
+ throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
+
+ }
+
+ }
+
+ public void saveItemOnFolder(String user, InputStream inputStream,
+ String folderId) throws StatAlgoImporterServiceException {
+ Workspace ws;
+ try {
+ ws = HomeLibrary.getUserWorkspace(user);
+
+ WorkspaceItem workSpaceItem = ws.getItem(folderId);
+ if (!workSpaceItem.isFolder()) {
+ throw new StatAlgoImporterServiceException(
+ "Destination is not a folder!");
+ }
+
+ WorkspaceItem projectItem = ws.find(
+ STATISTICAL_ALGORITHM_PROJECT_FILE_NAME, folderId);
+
+ if (projectItem == null) {
+ ws.createExternalFile(STATISTICAL_ALGORITHM_PROJECT_FILE_NAME,
+ STATISTICAL_ALGORITHM_PROJECT_FILE_DESCRIPTION,
+ STATISTICAL_ALGORITHM_PROJECT_MIMETYPE, inputStream,
+ folderId);
+ } else {
+ ws.updateItem(projectItem.getId(), inputStream);
+ }
+
+ return;
+ } catch (WrongItemTypeException | WorkspaceFolderNotFoundException
+ | InternalErrorException | HomeNotFoundException
+ | ItemNotFoundException | InsufficientPrivilegesException
+ | ItemAlreadyExistException | WrongDestinationException e) {
+ e.printStackTrace();
+ throw new StatAlgoImporterServiceException(e.getLocalizedMessage());
+
+ }
+ }
/**
*
@@ -38,10 +124,11 @@ public class FilesStorage {
ws = HomeLibrary.getUserWorkspace(user);
WorkspaceItem workSpaceItem = ws.getItem(itemId);
- if(workSpaceItem.isFolder()){
- throw new StatAlgoImporterServiceException("Folder is not valid item!");
+ if (workSpaceItem.isFolder()) {
+ throw new StatAlgoImporterServiceException(
+ "Folder is not valid item!");
}
-
+
return retrieveImputStream(user, workSpaceItem);
} catch (WorkspaceFolderNotFoundException | InternalErrorException
@@ -87,6 +174,4 @@ public class FilesStorage {
}
-
-
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/ProjectArchiver.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/ProjectArchiver.java
index 7bd4b64..1990df2 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/ProjectArchiver.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/server/storage/ProjectArchiver.java
@@ -1,8 +1,11 @@
package org.gcube.portlets.user.statisticalalgorithmsimporter.server.storage;
import java.beans.XMLEncoder;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import org.gcube.application.framework.core.session.ASLSession;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.exception.StatAlgoImporterServiceException;
import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project.Project;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -19,13 +22,19 @@ public class ProjectArchiver {
.getLogger(ProjectArchiver.class);
- public static void archive(Project project) {
+ public static void archive(Project project, ASLSession aslSession)
+ throws StatAlgoImporterServiceException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
XMLEncoder xmlEncoder = new XMLEncoder(byteArrayOutputStream);
xmlEncoder.writeObject(project);
xmlEncoder.close();
logger.debug("Archived:" + byteArrayOutputStream);
+
+ ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
+ FilesStorage filesStorage=new FilesStorage();
+ filesStorage.saveItemOnFolder(aslSession.getUsername(), byteArrayInputStream, project.getProjectFolder().getItemDescription().getId());
+
}
}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/InputVariables.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/InputVariables.java
new file mode 100644
index 0000000..c8faba9
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/InputVariables.java
@@ -0,0 +1,57 @@
+package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.input.EnvironmentVariables;
+
+/**
+ *
+ * @author giancarlo email: g.panichi@isti.cnr.it
+ *
+ */
+public class InputVariables implements Serializable {
+
+ private static final long serialVersionUID = -2405068429998054485L;
+ private ArrayList listEnvironmentVariables;
+ private ArrayList listSelectedRows;
+
+ public InputVariables() {
+ super();
+ }
+
+ public InputVariables(
+ ArrayList listEnvironmentVariables,
+ ArrayList listSelectedRows) {
+ super();
+ this.listEnvironmentVariables = listEnvironmentVariables;
+ this.listSelectedRows = listSelectedRows;
+ }
+
+ public ArrayList getListEnvironmentVariables() {
+ return listEnvironmentVariables;
+ }
+
+ public void setListEnvironmentVariables(
+ ArrayList listEnvironmentVariables) {
+ this.listEnvironmentVariables = listEnvironmentVariables;
+ }
+
+ public ArrayList getListSelectedRows() {
+ return listSelectedRows;
+ }
+
+ public void setListSelectedRows(
+ ArrayList listSelectedRows) {
+ this.listSelectedRows = listSelectedRows;
+ }
+
+ @Override
+ public String toString() {
+ return "InputVariables [listEnvironmentVariables="
+ + listEnvironmentVariables + ", listSelectedRows="
+ + listSelectedRows + "]";
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/MainCode.java b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/MainCode.java
index bcd1383..5aa175b 100644
--- a/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/MainCode.java
+++ b/src/main/java/org/gcube/portlets/user/statisticalalgorithmsimporter/shared/project/MainCode.java
@@ -2,6 +2,8 @@ package org.gcube.portlets.user.statisticalalgorithmsimporter.shared.project;
import java.io.Serializable;
+import org.gcube.portlets.user.statisticalalgorithmsimporter.shared.workspace.ItemDescription;
+
/**
*
* @author Giancarlo Panichi email: